为何Word存PDF的宏生成的文件不显示在最近使用项中?
解决宏生成的PDF不显示在最近使用项的问题
手动通过「文件>另存为PDF」生成的PDF会出现在Word的最近使用列表里,但你用ExportAsFixedFormat方法的宏导出时,Word不会自动把这个PDF加入最近列表——因为这个方法是专门的后台导出接口,默认不触发最近文件记录逻辑。
下面给两种可行的解决办法:
方法一:手动添加到最近文件列表
在宏导出PDF后,调用Word的AddToRecentFiles方法,把生成的PDF路径主动加入最近使用项。修改后的宏代码如下:
Sub SaveAsPDF() ' ' Silent SaveAsPDF Macro ' Dim PDFPath As String ' 获取要导出的PDF路径 PDFPath = Replace(ActiveDocument.FullName, ".docx", ".pdf") ActiveDocument.ExportAsFixedFormat OutputFileName:= _ PDFPath, _ ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _ wdExportOptimizeForPrint, Range:=wdExportAllDocument, Item:= _ wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _ CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _ BitmapMissingFonts:=True, UseISO19005_1:=False ' 将PDF添加到最近使用列表 Application.AddToRecentFiles PDFPath ActiveDocument.PrintOut Copies:=1 End Sub
方法二:改用SaveAs2方法导出PDF
SaveAs2方法和手动「另存为」操作的逻辑一致,会自动把生成的PDF加入最近使用列表。只要设置好对应的保存格式参数,就能达到和原宏一样的导出效果:
Sub SaveAsPDF() ' ' Silent SaveAsPDF Macro ' Dim PDFPath As String PDFPath = Replace(ActiveDocument.FullName, ".docx", ".pdf") ' 用SaveAs2另存为PDF,自动加入最近列表 ActiveDocument.SaveAs2 _ FileName:=PDFPath, _ FileFormat:=wdFormatPDF, _ AddToRecentFiles:=True ' 显式指定加入最近列表(默认也是True) ActiveDocument.PrintOut Copies:=1 End Sub
两种方法都能解决问题,你可以根据自己的习惯选择。如果需要保留原ExportAsFixedFormat的特定参数(比如书签、ISO标准这些),优先选方法一;如果追求和手动操作完全一致的逻辑,方法二更合适。
内容的提问来源于stack exchange,提问作者Goodday
相关产品推荐
相关产品推荐

