Private Sub CommandButton1_Click()
'读取目标文本,并替换后生成新的文本
Dim objApp As Object 'Word.Application
Dim objDoc As Object 'Word.Document
Dim strTemplates As String '模板文件路径名
Dim strFileName As String '将数据导出到此文件
'工具-引用
'Microsoft Word 16.0 Object Library (版本不一,不一定为16)
'当发现找不到上面的引用或引用后无效的情况下,定义一个常量wdReplaceAll = 2 ,数字2代表替换所有出现的指定内容。若能引用上边的包,可不定义这个常量。
Const wdReplaceAll = 2 '替换所有出现的指定内容
strTemplates = ThisWorkbook.Path & "\模板.doc"
strFileName = ThisWorkbook.Path & "\数据修改后文本存储夹\替换后文本.doc"
Set objApp = CreateObject("Word.Application")
objApp.Visible = True
Set objDoc = objApp.Documents.Open(strTemplates, , False)
'开始替换模板预置变量文本
With objApp.Application.Selection
.Find.ClearFormatting
.Find.Replacement.ClearFormatting
With .Find
.Text = "{$内容1}"
.Replacement.Text = "内容11111"
End With
.Find.Execute Replace:=wdReplaceAll
With .Find
.Text = "{$内容2}"
.Replacement.Text = "内容22222"
End With
.Find.Execute Replace:=wdReplaceAll
With .Find
.Text = "{$内容3}"
.Replacement.Text = "内容3333"
End With
.Find.Execute Replace:=wdReplaceAll
End With
'将写入数据的模板另存为文档文件
objDoc.SaveAs strFileName
objDoc.Saved = True
End Sub
这段代码主要是解决:替换模板 .doc 中的指定内容1、2、3,并将新生成的文本保存到指定路径下。主要容易出现的问题是,要使用此功能需要在工具-引用中,引用Microsoft Word 16.0 Object Library ,但在实际操作时,此包可能找不到或路径有问题,导致引用不上。所以建议不引用此包,直接将变量替换成数字常量,如:Const wdReplaceAll = 2 ,就能成功运行。如果解决了各位的问题请多多点赞收藏。