我收到这个错误消息:“运行时错误5981. 'Add‘of object 'Documents’方法失败。”当我使用模板创建新的Word文档时,就会发生这种情况。代码发布在下面,在2016版本的第二个用户开始使用它之前,它工作得很好。它适用于所有使用旧版本Word模板的2013年用户。当它到达集合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年的用户创建第二个模板来绕过错误消息。然而,拥有一个供所有用户共享的通用模板会更好。
发布于 2016-09-16 13:57:01
我自己的Excel应用程序打开一个Word模板。
调用此语句时引发错误5981:
Set oTemplate = moWordApp.Documents.Add(template:=sTemplate, Visible:=True)
打开现有Word文档时也可能触发此错误:
moWordApp.Documents.Open(FileName:=...
在我的情况下,错误5981的原因是Word模板不是一个受信任的文档。手动打开Word模板时,它是在受保护的视图中打开的。当通过VBA自动打开模板时,这显然会导致错误5981。
发布于 2016-09-16 14:28:36
更懒惰的解决方案可以是:
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
另请注意,可以从Office2007开始打开*x文件,其中.Application.Version = "12.0"
https://stackoverflow.com/questions/37858430
复制相似问题