Excel-VBA Find.replace with循环无法正常工作

我试图epxort excel文件的每一行到一个新的pdf文件基于一个docx模板,其中包含的文本,这个macros将search和从Excel表中的相关领域取代。

问题是代码只能在第一个循环中正常工作。 第一次循环之后,一个1.pdf文件从excel中导出为正确的字段,但是现在保存的模板docx文件和excel中的数据一样,导致结果后来循环无法正常工作。 下一行的所有excel字段都由于某种原因被追加到模板的开头。

请帮我纠正这个代码,以便每次循环运行正确。 期望的结果是每一行的Excel只会被导出到一个新的PDF文件,而模板DOCX保持不变。

谢谢。

Sub ReplaceText() Dim wApp As Word.Application Dim wDoc As Word.Document Dim z As Integer Set wApp = CreateObject("Word.Application") wApp.Visible = True For z = 3 To 6 Set wDoc = wApp.Documents.Open("D:\test.docx") With wDoc .Application.Selection.Find.Text = "TIEU_DE" .Application.Selection.Find.Execute .Application.Selection = Range("B" & z) .Application.Selection.EndOf .Application.Selection.Find.Text = "ENGLISH" .Application.Selection.Find.Execute .Application.Selection = Range("C" & z) .Application.Selection.EndOf .Application.Selection.Find.Text = "tenTG" .Application.Selection.Find.Execute .Application.Selection = Range("D" & z) .Application.Selection.EndOf .Application.Selection.Find.Text = "Noidung" .Application.Selection.Find.Execute .Application.Selection = Range("E" & z) .Application.Selection.EndOf .SaveAs2 "D:\test.pdf", 17 .Close SaveChanges = False End With Next z End Sub 

.Close SaveChanges = False给我一个编译错误(variables未定义)

.Close SaveChanges := False适用于我,不保存更改。

所有在下一次迭代中复制到文档起始处的原因是find.execute方法不会移动select(因为它什么都没有find)所以光标停留在文档的开头,但是仍然复制单元格。

而不是test.docx使用word模板test.dotx(创build它)

为了保存PDF文件使用类似的东西

  .ExportAsFixedFormat OutputFileName:="D:\test" & z & ".pdf", ExportFormat:= _ wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _ Item:=wdExportDocumentContent, IncludeDocProps:=True 

和之后添加

 wDoc.Close saveChanges:=False Set wDoc = Nothing