我试图将excel文件的每一行epxort到一个新的pdf文件基于一个docx模板,其中包含此宏将从相关字段中搜索和替换的文本在Excel表格中。Excel-VBA Find.replace循环无法正常工作
问题是代码仅在第一个循环中正常工作。第一次循环后,一个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”;第二,使用“dotx作为”模板文件格式而不是“docx” –