2012-02-16 197 views
0

我試圖創建一個宏,該文件從Word(或Excel)2007+保存時執行。宏需要檢查文件的名稱/位置以決定是否執行,然後如果文件名檢出(可能是因爲它附有'_temp',或存在於\ temp文件夾中),那麼以及保存該文件,Word也保存爲PDF相同的名稱,但顯然與.pdf擴展名相反。最好我希望在保存之前發生PDF,但我並沒有受到影響。 Word客戶端已經安裝了SaveAsPDForXPS插件。文件保存時將Word宏保存爲PDF

到目前爲止,我已經成功地弄清楚,我需要的FileSave(宏)處理它,這(從記錄測試宏)保存位可能看起來像:

Sub FileSave() 
' 
' FileSave Macro 
' 
' 
    ActiveDocument.ExportAsFixedFormat OutputFileName:= _ 
     "C:\Documents and Settings\rdyce\Desktop\Doc1.pdf", ExportFormat:= _ 
     wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _ 
     wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _ 
     Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _ 
     CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _ 
     BitmapMissingFonts:=True, UseISO19005_1:=False 


End Sub 
+1

您需要在應用程序中輸入「Visual Basic編輯器」,並把代碼添加到「BeforeSave」事件,不幸的是你需要在每個用戶的機器上執行此操作,除非您可以開發用於導入自己的獨立插件。 – 2012-02-16 10:12:01

+0

之前!好東西。我會爲Addin做一個偵察...... – Dycey 2012-02-16 10:24:42

回答

2

好吧,我認爲這是做jjob,但任何指向明顯錯誤仍然感激地收到的指針。另外,如何把它變成一個插件仍然證明不解:

Sub FileSave() 
' 
' FileSave Macro 
' 

    ActiveDocument.Save 

    Dim StrFile As String 
    Dim StrPath As String 
    Dim StrName As String 
    Dim StrPDFName As String 

    StrPath = ActiveDocument.Path 'Get document path 
    StrFile = ActiveDocument.Name 'Get document name 

    If InStr(StrFile, "_tempkey") Then 'Check if this is a special file 

     If InStr(StrFile, ".") Then 
      StrName = Left(StrFile, (InStr(StrFile, ".") - 1)) 
     Else 
      StrName = StrFile 
     End If 

     StrPDFName = StrPath + "\" + StrName + ".pdf" 

     ActiveDocument.ExportAsFixedFormat OutputFileName:=StrPDFName, _ 
      ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, _ 
      OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _ 
      Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _ 
      CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _ 
      BitmapMissingFonts:=True, UseISO19005_1:=False 

    End If 

End Sub 
+0

實際上,插件相當簡單。實質上,只需將其保存爲.dotm文件並粘貼到Word啓動文件夾中即可。這似乎是訣竅。 – Dycey 2012-02-16 16:14:34