2016-12-05 181 views
-1

我试图用Excel打开一个Word文档,使用VBA。下面是代码:不打开word文档

Sub Openuserguiddoc() 
    'Open an existing Word Document from Excel 
    Dim objWord As Object 
    Set objWord = CreateObject("User Guide to VR Referrals.docx") 
    objWord.Visible = True 
    Documents.Open "N:\MHBS\Education and Employment\VR Reports\VRU REFERALS\Past Years Referrals\User Guide to VR Referrals.docx" 
End Sub 

Set objWord = CreateObject("User Guide to VR Referrals.docx")挂断。 但是对于我的生活,我无法弄清楚什么是错的。有任何想法吗?

+0

也许你需要提供完整的路径? –

+0

不,他应该提供“Word.Application”作为参数给CreateObject – z32a7ul

+0

@ z32a7ul nope,此方法也适用。 –

回答

1

OK,你也可以尝试它没有迟到的约束,因为我们似乎在这里遇到麻烦。

在VBA编辑器中,转到工具然后引用:

Ref

,然后标出的Microsoft Word列表(版本号可能会有所不同)

enter image description here

然后用这个代码:

Sub Openuserguiddoc() 
    'Open an existing Word Document from Excel 
    Dim objWord As Word.Application 
    Set objWord = New Word.Application 
    objWord.Visible = True 
    objWord.Documents.Open "N:\MHBS\Education and Employment\VR Reports\VRU REFERALS\Past Years Referrals\User Guide to VR Referrals.docx" 
End Sub 

让我们知道你如何继续!

+0

完全按照计划工作。谢谢大家的帮助。安德鲁,你的非迟到的指导非常简洁,易于遵循。 –

1
Dim objWord As Object 
Dim objDoc As Object 

Set objWord = CreateObject(“Word.Application”) 
Set obj­Doc = objWord.Documents.Open "N:\MHBS\Education and Employment\VR Reports\VRU REFERALS\Past Years Referrals\User Guide to VR Referrals.docx" 
+0

我已经尝试过发布的建议,并且已经挂断了各个位置。整个路径是'N:\ MHBS \ Education and Employment \ VR Reports \ VRU Reflections \ Past Years Referrals \ VR Guide Reference .docx用户指南“。我没有提及代码错误**运行时错误429.活动X组件不能创建对象。**用户没有对文档进行任何更改,只是阅读。 –

+0

我做了ASH建议的变化,没有任何反应。我可能错过了一些东西。这里是现在编写的代码:'Sub Openuserguiddoc() '从Excel打开现有的Word文档 Dim objWord As Object Set objWord = CreateObject(“N:\ MHBS \ Education and Employment \ VR Reports \ VRU REFERALS \ Past Years Referrals \ VR Referrals.docx的用户指南“) objWord.Application.Visible = True End Sub'。 –

2

CreateObject("")用于创建命名对象,如Word.Application,不用于打开文件。尝试CreateObject("Word.Application")

你也可能要改变Documents.OpenobjWord.Documents.Open,因为如果你要创建一个拥有创建对象的对象,它通常是因为你还没有做对它的引用,使Excel中完全不认识什么Document对象或的确,但是objWord呢。

此外,当您打开此文档时,如果您想使用VBA对其进行操作,您需要set另一个对象链接到它,并且您通过在文档的前面添加set声明来执行此操作。打开语句,在大致相同的方式,你就与CreateObject

1

这些少量的修改应当解决这个问题:

1提供的文件的完整路径,如:

Set objWord = CreateObject("N:\MHBS\Education and Employment\VR Reports\VRU REFERALS\Past Years Referrals\User Guide to VR Referrals.docx") 

但是然后您的对象是Word.Document类型,而不是Word.Application。

2至使其可见,您需要:

objWord.Application.Visible = True 

3-以后你在Word中打开另一个文件,所以用这个词Apllication对象

Set newDoc = objWord.Aplication.Documents.Open("N:\MHBS\Education and Employment\VR Reports\VRU REFERALS\Past Years Referrals\User Guide to VR Referrals.docx") 
+1

这个事实证明,这让我在微软中失望了。这是如何强制逻辑对象创建的?任何查看代码的人都不会知道对象将被设置为什么,这只是不好的编码练习 –

+1

@AndrewWynn我不是MS员工,所以我不会参加战争来捍卫他们的选择。但是他们为了方便起见,就像在点击资源管理器中的指定文档时不需要指定应用程序一样,因为信息在注册表中可用。另外请记住,OP也选择了'late-binding',所以这是他们的选择,以“猜测”产生的对象是什么... –

+0

我不会对你感到恼怒,而且我很抱歉,如果它看起来像但是,VBA是一种入门级语言,因此为了方便而添加这种功能对用户来说非常有用,但是如果他们继续编写其他人必须调试的代码,那么可怕程度会很高。 –