我试图将excel文件的每一行转换为基于docx模板的新pdf文件,该模板包含此宏将从Excel工作表中的相关字段中搜索和替换的文本。
问题是代码只能在第一个循环中正常工作。在第一次循环之后,使用来自excel的正确字段导出1.pdf文件,但模板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
答案 0 :(得分:0)
而不是test.docx使用word template test.dotx(创建它)
要保存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
答案 1 :(得分:0)
.Close SaveChanges = False
给了我一个编译错误(变量未定义)
.Close SaveChanges := False
适用于我并且不保存更改。
在下一次迭代中将所有内容复制到文档开头的原因是find.execute方法不会移动选择(因为它什么都没找到),所以光标停留在文档的开头但是你仍然复制细胞。