2016-12-05 213 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是一種入門級語言,因此爲了方便而添加這種功能對用戶來說非常有用,但是如果他們繼續編寫其他人必須調試的代碼,那麼可怕程度會很高。 –