2010-11-15 3 views
1

Я получаю сообщение об ошибке, когда я запускаю это приложение в VS 2010 (она отлично работает в VS 2008)Ошибка при создании экземпляра Слова в VB.net

Private Sub GenerateInvoice()

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

BTW, нет необходимости в CSharpify VB с такими вещами, как 'Dim emptyObject As Object = System.Reflection.Missing.Value'. Просто не вводите значения и не указывайте необязательный параметр (ы), например 'Dim InvoiceDoc As New Word.Document = wordApp.Documents.Add (Template: = InvoicePath)'. Меньше кода - C# является настолько подробным. :) –

+0

см. Также: http://stackoverflow.com/questions/7890905/delay-when-creating-microsoft-office-interop-word-application для одного и того же исключения, но другая проблема с корнем –

ответ

1

Может быть InvoicePath используется в случае запуска с помощью VS2010 является недействительным и поэтому вызов Documents.Add терпит неудачу?

Вы используете оба VS2010 и VS2008 на одной машине? И установлен ли InvoicePath на тот же самый путь в обоих случаях?

+0

Отличный улов. Спасибо !! – user279521

0

Попробуйте

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

ошибка в строке ActiveDocument: Эта команда недоступна, потому что документ не открыт. " – user279521

+0

Возможно, InvoicePath не указывает на правильное расположение вашего шаблона документа? –

Смежные вопросы