【问题标题】:COMException occurred - Unknown name. (Exception from HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME)) when trying to modify an existing excel file发生 COMException - 未知名称。 (HRESULT 异常:0x80020006 (DISP_E_UNKNOWNNAME))尝试修改现有 excel 文件时
【发布时间】:2017-01-05 04:13:35
【问题描述】:

第 3 行返回 COMException。 oBooks.GetType().Invoke...

Dim oBooks As Microsoft.Office.Interop.Excel.Workbook = Me.fOpenXlsFile(strXLSFile)

Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")
oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)

For i As Int32 = 0 To objLv.Items.Count - 1
    oBooks.Styles.Item(i + 1).Interior.Color = objLv.Items(i).BackColor
Next
oBooks.Save()

【问题讨论】:

  • 尝试编写both 后期绑定代码 早期绑定代码是没有意义的。您对互操作库有很强的依赖关系,您不妨使用 Application.WorkBooks。如果由于某种原因没有 Application 对象引用,请从 WorkBook.Application 获取它。最大的好处是你不能犯这样的错误,IntelliSense 告诉你 WorkBook 没有 Add() 方法。

标签: vb.net excel com


【解决方案1】:

您正在尝试将工作簿添加到另一个工作簿。您需要将其添加到 Workbooks 集合中。这样的事情应该可以工作:

Dim wbs As Excel.Workbooks = oBooks.Application.Workbooks

wbs.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, wbs, Nothing, ci)

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 2011-11-12
    • 2023-04-01
    • 1970-01-01
    • 2015-08-29
    • 2013-03-13
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多