首页 > 解决方案 > 无法将类型为“System.__ComObject”的 COM 对象转换为类类型“System.Array”

问题描述

我尝试使用 VB.net 读取 excel char,我使用 VS2013 和 Office2013

当我使用 LBOUND 和 UBOUND 函数时,会导致此异常

代码是:

 Dim objApp As New Excel.Application
 Dim objWorkbook As Excel.Workbook
 Dim objWorksheet As Excel.Worksheet

 objWorkbook = objApp.Workbooks.Open(path & FileName)
 objWorksheet = objWorkbook.Sheets(2)
 area = objWorkSheet.Range("a7", "a8")
 Debug.Print(LBound(area))

和例外:

未处理System.InvalidCastException HResult=-2147467262
Message=无法将类型为“System.__ComObject”的COM对象强制转换为类型“System.Array”。表示COM组件的类型不能强制转换为不表示COM组件的类型;不过,只要基础COM组件对接口IID的查询接口调用,即可支持将这些实例强制转换为接口。</p>

我搜索谷歌并没有太多有用的信息,所以任何帮助都非常感谢。

标签: excelwindowsvb.netcom

解决方案


Range属性返回一个Range对象。要获取值,请使用objectValue的orValue2属性。当对象跨越多个单元格时,该值将是一个二维数组(矩阵) 。如果对象仅跨越单个单元格,则该值将是一个标量。RangeRangeRange

Debug.Print(LBound(area.Value))

推荐阅读