2009-11-19 137 views
0

這可能是我應該知道的東西,但我對此感到困惑。 我試圖創建一些對象,並能夠訪問和修改這些全局。全局創建對象實例

我試圖創建一個公共模塊並在其中聲明幾個對象。 我能夠從另一個子進程訪問這些,但是在構建和運行進程並嘗試修改這些對象之後,出現異常錯誤。

如果我在Public Class Form1中聲明對象,會發生同樣的事情。例如像這樣:

現在
Public Class Form1 
Public appWord = New Microsoft.Office.Interop.Word.Application 
Public wordDoc as Microsoft.Office.Interop.Word.Document 

,在我的按鈕,我有這樣的:

wordDoc = appWord.Documents.Open("c:\temp\test.dot") 
appWord.Quit() 
appword = Nothing 

我已經建立了該項目,並按下按鈕後,我得到這個錯誤:

Type mismatch. (Exception from HRESULT: 0x80020005(DISP_E_TYPEMISMATCH)) 

我想要做的是啓動一個Winword.exe,然後加載一個模板,並從模板中讀取一些宏。然後我希望能夠從我的應用程序中替換宏代碼,然後將更改存儲到宏中。我有一個公共子文件,它讀取宏並將文本放入文本框中。然後我有一個單獨的公共小組做替換。但是,我試圖找出一次創建這些對象的巧妙方式,所以我不必一遍又一遍地做。

編輯:

Private sub Button1_Click 
Dim appWord = New Microsoft.Office.Interop.Word.Application 
Dim wordDoc as Microsoft.Office.Interop.Word.Document 

wordDoc = appWord.Documents.Open("C:\temp\test.dot") 
appWord.Quit() 
End sub 

編輯:如果我聲明的對象在同一子作爲按鈕,這樣不會出現這種情況我現在的工作。沒有錯誤,只是該文件不存在..我是一個白癡:)

+0

你什麼時候遇到這個錯誤?什麼代碼正在執行? – 2009-11-19 09:16:15

回答

1

你得到的問題與你聲明你的「全局變量」的方式沒有任何關係。這是一個Dispatch接口錯誤,告訴你你傳遞的類型不是Interop類期望的類型,也就是說,調用Open可能是錯誤的。根據this reference它應該通過引用傳遞(所以文字字符串無效)。

+0

但是,爲什麼當我將這些對象聲明在與我修改的對象相同的子對象中時它工作正常?詳情請參閱我編輯的第一篇文章。 – 2009-11-19 09:21:51

+0

對不起,我是一個白癡..該文件不存在.. Thanx清理這個了!在那裏你看到人類的錯字可以毀掉一切! :) – 2009-11-19 09:23:29

+0

我們一直在學習,直到我們認爲「我是白癡」。當我們認爲我們很成熟 - 進展停止! – MSIL 2009-11-19 09:32:00