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

时间:2016-04-25 18:42:57

标签: excel vba loops

我试图将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

2 个答案:

答案 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方法不会移动选择(因为它什么都没找到),所以光标停留在文档的开头但是你仍然复制细胞。