Word VBA循环在每个页面上导出PDF

Word VBA循环在每个页面上导出PDF,vba,ms-word,Vba,Ms Word,我每页有两张桌子。我制作了一个宏来复制表(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

我每页有两张桌子。我制作了一个宏来复制表(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 

请注意另存为PDF的方法中的这段代码:

Range:=wdExportCurrentPage
问题中的代码的问题是它从不移动到其他页面

有多种方法可以做到这一点,但最简单的是模仿用户按F5(“转到”)并选择转到特定页面。我已经在
For
循环的末尾添加了这一点。还有
Debug.Print
语句,这些语句将在即时窗口中显示页码(VBA编辑器中的Ctrl+G)-您可以注释掉或删除它们

我还添加了一行代码,以确保代码从第一页开始,这在基于选择执行某些操作时是必需的;我将
I
a
的声明更改为数据类型
Long
,建议用于“计数器”


请格式化您的代码。请参见,1)使用命名问题的标题,2)添加vba标记,3)将代码缩进4个位置,以便将其格式化为代码。这将有助于我们帮助您,也有助于有相同问题的人找到我们建议的解决方案。您能展示一些屏幕截图以更好地解释吗?请用word制作两个表格。在第二个表中写任何东西。在第一个表第1行第3列中写上“Ashok”。在第一个表第2行第3列中写上“Jariwala”。复制第二页上的两个表。在第二页表(1)第1行第3列写上“Ashok”。表(1)第2行第3列写“扎里瓦拉”。在上面的代码中,我将第(4)行更改为第(2)行。现在运行代码。我的word页面有两页。我想将两个PDF文件导出到我的默认位置。第一页为“Ashok-Jariwala”,第二页为“Ashok-Zariwala”。我只得到“Ashok-Jariwala”。我希望你能理解我的问题。谢谢你花时间来帮助我。还有你添加的Debug.Print语句,显示当选择第一页时,它将导出为pdf。然后转到第二页。即时窗口(VBA编辑器中的Ctrl+G)显示页码为2。但随后它转到“下一步”命令并将第一页保存为PDF。我认为是“表(1)”造成了问题。如果您实际上没有选择表(1),那么这不应该影响页面。我测试了你的代码,它对我有效。但是,我注意到,您的代码将每个文件保存为相同的名称。也许你应该在文件名中使用计数器?请用word制作两个表格。在第二个表中写任何东西。在第一个表第1行第3列中写上“Ashok”。在第一个表第2行第3列中写上“Jariwala”。复制第二页上的两个表。在第二页表(1)第1行第3列写上“Ashok”。表(1)第2行第3列写“扎里瓦拉”。在上面的代码中,我将第(4)行更改为第(2)行。现在运行代码。我的word页面有两页。我想将两个PDF文件导出到我的默认位置。第一页为“Ashok-Jariwala”,第二页为“Ashok-Zariwala”。我只得到“Ashok-Jariwala”。我希望你能理解我的问题。
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