批量更新工具需要调用其他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
快速总结:我需要调用额外的宏来修改现有代码中的文档,该代码可以将 Word 文件批量转换为 PDF(如果可能)。
长话短说:我有很久以前的代码(归功于我十年前找到它的地方)。它使用文件对话框允许 selecting 多个文件,然后将这些 selected 文件转换为 PDF。我有将近 1,800 个 Word 文档需要处理(使用代码@timothyrylatt 在此处提供帮助:
注意:如果无法添加到现有代码中,是否还有办法至少 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