我試圖將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」 –