2010-11-15 62 views
1

創建Word的實例時,當我在VS 2010中運行這個程序,我得到一個錯誤錯誤在VB.net

私人小組GenerateInvoice()(它在VS 2008中正常工作)

Dim emptyObject As Object = System.Reflection.Missing.Value 

Dim wordApp As New Word.Application 
wordApp.Visible = True 

Dim InvoiceDoc As New Word.Document 
InvoiceDoc = wordApp.Documents.Add(InvoicePath, emptyObject, emptyObject, emptyObject) 

Dim totalFields As Integer = 0 

For Each mergeField As Word.Field In InvoiceDoc.Fields 

在對於每一行

將出現錯誤「對象引用不設置爲一個對象的一個​​ 實例」。

我在這裏錯過了什麼嗎?

+0

順便說一句,沒有必要使用類似於'Dim emptyObject As Object = System.Reflection.Missing.Value'的方法對VB進行CSharpify。只要不輸入值並將可選參數命名爲'Dim InvoiceDoc As New Word.Document = wordApp.Documents.Add(Template:= InvoicePath)'。較少的代碼 - C#非常冗長。 :) – 2010-11-16 18:33:50

+0

另請參閱:http://stackoverflow.com/questions/7890905/delay-when-creating-microsoft-office-interop-word-application針對相同的異常,但ActiveDocument行上的另一個根問題 – 2011-10-25 14:32:31

回答

1

也許在通過VS2010運行實例使用的InvoicePath是無效的,所以調用Documents.Add失敗?

你在同一臺機器上同時運行VS2010和VS2008嗎?並且在兩個實例中,InvoicePath設置爲完全相同的路徑?

+0

很棒。謝謝 !! – user279521 2010-11-15 13:41:20

0

嘗試

Dim InvoiceDoc As Word.Document 
wordApp.Documents.Add(InvoicePath, emptyObject, emptyObject, emptyObject) 
InvoiceDoc=wordApp.ActiveDocument 
+0

錯誤:「此命令不可用,因爲沒有文檔處於打開狀態。「 – user279521 2010-11-15 13:19:03

+0

也許InvoicePath沒有指向您的文檔模板的正確位置? – 2010-11-15 13:53:43