我正在Excel中使用VBA从Word模板在Word中生成运输标签。有一次,在成功打开Word文档并填充我的数据后,我在关闭原始模板时不小心将其保存了下来。
我想阻止用户执行此操作。如果他们关闭Word doc而不先保存它,我希望提示他们输入SaveAs,而不是保存在现有模板上,并且我希望SaveAs提示符默认为.doc或.docx文件,而不是.dotx模板文件。如果他们单击保存按钮或Ctrl + S而不是仅关闭文档,则希望显示相同的“另存为”提示,而不是覆盖模板。
作为参考,我将包含打开我的Word模板的代码。我使用Object而不是Word.Application声明我的对象,以防止缺少对在计算机上设置的Word对象库的引用的用户的引用错误。这将在几台不同的计算机上使用,而且它们都没有相同的Office版本,因此,如果您能想到我可以做些其他事情来保持兼容性,我希望能听到。
由于这涉及保存从Excel工作簿生成的Word文档,因此我不确定如何为此编写事件处理。任何帮助将非常感激。谢谢。
Dim wdApp As Object
Dim objRange As Object
Dim objDoc As Object
Set wdApp = CreateObject("Word.Application")
Set objDoc = wdApp.Documents.Open("[template file location]")
With wdApp
.Visible = True
.Activate
'Code that places strings at bookmark locations
Set objRange = objDoc.Bookmarks("bookmarkName").Range
objRange.InsertAfter (stringName)
End With
答案 0 :(得分:1)
不要使用Set objDoc = wdApp.Documents.Open(“ [模板文件位置]”)。正确的语法是使用
Set objDoc = wdApp.Documents.Add("[template file location]")
这将添加基于指定模板的文档。您可以传递更多的参数,包括 DocumentType ,它将指定新文档是否为docx格式。