Excel VBA打开word模板,填充,然后另存为.docx文件

Bri*_*ian 8 excel vba excel-vba

我创建了一个带有占位符的单词模板,例如<>,然后我可以使用我的excel宏自动替换.当我再次尝试这个过程时,word文档现在打开,说它是一个只读文档.我该如何保存我的Word模板以便进行编辑?另外,当我通过我的excel宏打开单词模板时,它如何知道将其保存为新的word文档,而不是将其保存为更新的模板?

这是我的代码:

Sub ReplaceText()
Dim wApp As Word.Application
Dim wDoc As Word.Document
Set wApp = CreateObject("Word.Application")
wApp.Visible = True

Set wDoc = wApp.Documents.Open("file name here")

With wDoc
    .Application.Selection.Find.Text = "<<name>>"
    .Application.Selection.Find.Execute
    .Application.Selection = Range("A5")
    .Application.Selection.EndOf

    .Application.Selection.Find.Text = "<<dob>>"
    .Application.Selection.Find.Execute
    .Application.Selection = Range("A6")

    .SaveAs2 Filename:=("file name goes here"), _
    FileFormat:=wdFormatXMLDocument, AddtoRecentFiles:=False
End With

End Sub
Run Code Online (Sandbox Code Playgroud)

Val*_*nte 8

虽然@wahwahwah 的方法有效,但它仍将模板作为文档打开以进行编辑,然后将其保存为另一种格式,同时抑制警报。我怀疑您想要实现的是从 shell 打开模板时的行为,它根据模板生成一个“新”文档。您可以使用“添加”方法来实现这一点;

Set wDoc = wApp.Documents.Add(Template:="file path here", NewTemplate:=False, DocumentType:=0)
Run Code Online (Sandbox Code Playgroud)


wah*_*wah 5

如果在设置文件名时指示文件是ReadOnly,并且关闭警报,则应解决提示问题:

Set wApp = CreateObject("Word.Application")
wApp.DisplayAlerts = False
Set wDoc = wApp.Documents.Open Filename:="C:\Documents\SomeWordTemplate.dot", ReadOnly:=True
Run Code Online (Sandbox Code Playgroud)

当你去保存文件时,只需用".doc"文件扩展名而不是".dot"保存它,以便将其保存为word文件类型.如果您愿意,还可以更改文件名和输出目录路径.(另外,请记得重新打开警报)

With wDoc

.ActiveDocument.SaveAs Filename:="C:\Documents\NewWordDocumentFromTemplate.doc"

End With

wApp.DisplayAlerts = True
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!