防止Word模板被保存; Word文档是从Excel生成的

时间:2019-01-02 02:41:30

标签: excel vba excel-vba ms-word

我正在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

1 个答案:

答案 0 :(得分:1)

不要使用Set objDoc = wdApp.Documents.Open(“ [模板文件位置]”)。正确的语法是使用

Set objDoc = wdApp.Documents.Add("[template file location]")

这将添加基于指定模板的文档。您可以传递更多的参数,包括 DocumentType ,它将指定新文档是否为docx格式。