Excel使用模板创建新的Word文档:运行时错误5981.方法'添加'对象'文件'失败

时间:2016-06-16 11:53:15

标签: excel vba ms-word runtime-error excel-2016

我收到此错误消息:"运行时错误5981.方法'添加'对象'文件'失败&#34。当我使用模板创建新的Word文档时会发生这种情况。代码发布在下面并且工作正常,直到2016版本中的第二个用户开始使用它。它适用于使用旧版Word模板的所有2013用户。当它到达下面的Set wdDoc = wdApp ...行时出现错误。

Public wdDoc As Word.Document
QuoteDirectory = "R:\PartsQuotes\"
QuoteTemplate = "QuoteTemplate.dot" 'template used for 2013 users
If Application.Version = "16.0" Then QuoteTemplate = QuoteTemplate2016.dotx"
Set wdApp = CreateObject("Word.Application") 'Create an instance of word
Set wdDoc = wdApp.Documents.Add(QuoteDirectory & QuoteTemplate) 'Open word file
wdApp.Visible = True

我需要在创建Word文档之后再做更多的事情,这就是我需要将其创建为Word.Document的原因。我可以通过为第二个2016用户创建第二个模板来解决错误消息。但是,为所有用户提供通用共享模板会好得多。

2 个答案:

答案 0 :(得分:0)

我自己的Excel应用程序打开Word模板。

调用此语句时会引发错误5981:

Set oTemplate = moWordApp.Documents.Add(template:=sTemplate, Visible:=True)

打开现有Word文档时也可能会触发错误:

moWordApp.Documents.Open(FileName:=...

在我的情况下,错误5981的原因是Word模板不是受信任的文档。 手动打开Word模板时,它在受保护的视图中打开。当通过VBA自动打开模板时,这显然会导致错误5981。

答案 1 :(得分:0)

更懒惰的解决方案可以是:

Dim wdDoc As Word.Document
Set wdDoc = GetObject("R:\PartsQuotes\QuoteTemplate.dot", "Word.Application") 
wdDoc.Application.Visible = True

这将基于当前Word实例中的模板打开一个新文档,或者如果没有打开则将打开新的Word应用程序。

或者首先尝试.dotx模板:

Dim wdDoc As Word.Document
On Error Resume Next
Set wdDoc = GetObject("R:\PartsQuotes\QuoteTemplate2016.dotx", "Word.Application") 
If Err.Number <> 0 Then 
    Set wdDoc = GetObject("R:\PartsQuotes\QuoteTemplate.dot", "Word.Application") 
End If
If not wdDoc Is Nothing Then wdDoc.Application.Visible = True
On Error GoTo 0 ' optional to reset the error handler

另请注意,* x文件可以从Office 2007开始打开.Application.Version = "12.0"