批量更新工具需要调用其他Word宏

Need to call other Word macros in mass update tool

快速总结:我需要调用额外的宏来修改现有代码中的文档,该代码可以将 Word 文件批量转换为 PDF(如果可能)。

长话短说:我有很久以前的代码(归功于我十年前找到它的地方)。它使用文件对话框允许 selecting 多个文件,然后将这些 selected 文件转换为 PDF。我有将近 1,800 个 Word 文档需要处理(使用代码@timothyrylatt 在此处提供帮助:),然后转换为 PDF。我尝试使用 'Call' 功能调用“Demo”宏,并更改保存设置,但文件仅转换为 PDF 而未调用其他“Demo”宏。我也尝试过在不同的区域调用它,但没有用。

注意:如果无法添加到现有代码中,是否还有办法至少 select 多个文件,运行 Demo 宏,然后以类似方式保存并关闭?

提前感谢您的帮助!

Sub MassUpdate()

Dim wDoc As Word.Document
Dim FoundFile As Variant
 
Dim wDialog As FileDialog
Set wDialog = Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
wDialog.AllowMultiSelect = True
 
If wDialog.Show <> -1 Then
    Exit Sub
End If
 
For Each FoundFile In wDialog.SelectedItems
     
    Set wDoc = Documents.Open(FoundFile, ReadOnly:=False, Visible:=False)
     
     Call Demo

     
    wDoc.ExportAsFixedFormat _
    OutputFileName:=wDoc.Path & "\" & Left(wDoc.Name, InStrRev(wDoc.Name, ".")) & "pdf", _
    ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, _
    OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
    Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
    CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
    BitmapMissingFonts:=True, UseISO19005_1:=False
     
    wDoc.Close SaveChanges:=True
     
Next
         Dim Answer
    Answer = MsgBox("Update more files?", vbYesNo, "Run Macro?")
    If Answer = vbYes Then
    Call MassUpdate
    End If
 End Sub

我怀疑这两个例程可能针对不同的文档。尝试修改您的演示例程以将文档作为输入参数:

Sub Demo(targetDoc as Document)
   Application.ScreenUpdating = False
   Dim r As Long, c As Long
   With targetDoc.Range

然后您将 Call 行修改为(无需使用 Call):

Demo wDoc