2012-02-16 140 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