我在每个页面上都有两个表。我做了一个宏,可以复制table(1)中的字符串,然后将文件导出为pdf。这很好。现在,我希望此宏在每个页面上运行。但是,当我运行代码时,它只是将第一页导出为PDF。 我的代码是:
Sub string_String_Pending()
Dim oTbl As Table
Dim i As Integer
Dim a
a = ActiveDocument.BuiltInDocumentProperties("Number of Pages")
For i = 1 To a
ActiveDocument.ExportAsFixedFormat
OutputFileName:=Left(ActiveDocument.Tables(1).Rows(1).Cells(3).Range.Text, _
Len(ActiveDocument.Tables(1).Rows(1).Cells(3).Range.Text) - 2) & " - " &
Left(ActiveDocument.Tables(1).Rows(4).Cells(3).Range.Text, _
Len(ActiveDocument.Tables(1).Rows(4).Cells(3).Range.Text) - 2) & ".pdf",
ExportFormat:=wdExportFormatPDF, Range:=wdExportCurrentPage
Next i
End Sub
答案 0 :(得分:0)
请注意保存为PDF的方法中的以下代码:
Range:=wdExportCurrentPage
问题代码的问题是它永远不会移到其他页面。
有多种方法可以完成此操作,但是最简单的方法是模仿用户按F5(“转到”)并选择转到特定页面。我在For
循环的末尾添加了该代码。还有Debug.Print
条语句将在立即窗口中显示页码(在VBA编辑器中为Ctrl + G)-您可以将其注释掉或删除。
我还添加了一行代码以确保代码从第一页开始,这在进行基于选择的操作时是必需的;我将i
和a
的声明更改为数据类型Long
,建议将其用于“计数器”。
Sub string_String_Pending()
Dim oTbl As Table
Dim i As Long
Dim a As Long
a = ActiveDocument.BuiltInDocumentProperties("Number of Pages")
Selection.HomeKey Word.WdUnits.wdStory
For i = 1 To a
ActiveDocument.ExportAsFixedFormat _
OutputFileName:=Left(ActiveDocument.Tables(1).Rows(1).Cells(3).Range.Text, _
Len(ActiveDocument.Tables(1).Rows(1).Cells(3).Range.Text) - 2) & " - " & _
Left(ActiveDocument.Tables(1).Rows(4).Cells(3).Range.Text, _
Len(ActiveDocument.Tables(1).Rows(4).Cells(3).Range.Text) - 2) & ".pdf", _
ExportFormat:=wdExportFormatPDF, Range:=wdExportCurrentPage
Debug.Print Selection.Information(wdActiveEndAdjustedPageNumber)
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=i+1
Next i
Debug.Print Selection.Information(wdActiveEndAdjustedPageNumber)
End Sub