【问题标题】:Error when creating an instance of Word in VB.net在 VB.net 中创建 Word 实例时出错
【发布时间】:2010-11-15 13:02:46
【问题描述】:

当我在 VS 2010 中运行此应用程序时出现错误(它在 VS 2008 中运行良好)

私有子 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

错误发生在 For Each 行

"对象引用未设置为 对象的实例。”

我错过了什么吗?

【问题讨论】:

  • 顺便说一句,没有必要用 Dim emptyObject As Object = System.Reflection.Missing.Value 之类的东西来 CSharpify VB。只是不要输入值并将可选参数命名为Dim InvoiceDoc As New Word.Document = wordApp.Documents.Add(Template:=InvoicePath)。更少的代码 - C# 是如此冗长。 :)
  • 另见:stackoverflow.com/questions/7890905/… 相同的异常,但不同的根本问题

标签: vb.net .net-4.0 ms-word


【解决方案1】:

也许通过 VS2010 运行的实例中使用的InvoicePath 无效,因此对Documents.Add 的调用失败?

您是否在同一台机器上同时运行 VS2010 和 VS2008? InvoicePath 在这两种情况下是否设置为完全相同的路径?

【讨论】:

    【解决方案2】:

    试试

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

    【讨论】:

    • ActiveDocument 行错误:“此命令不可用,因为没有打开文档。”
    • 也许 InvoicePath 没有指向您的文档模板的正确位置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2013-08-27
    相关资源
    最近更新 更多