VB.net Excel工作表().单元格().值

3
尝试在Excel工作表中写入信息,但遇到了一些奇怪的问题;)我在谷歌上查找了信息,但没有结果...所以请帮忙)
我添加了Microsoft.excel 14.0对象库引用,并导入了Microsoft.Office.interop。
我需要从特定单元格获取值,所以我使用命令Checker = shXL.cells(1,1)。但这里我没有值…我只得到了Equal / GetHashCode / GetType / toString这些内容。
所以问题是为什么我没有(.Value)来访问.cells,错误在哪里?
        Dim appXL As Excel.Application
        Dim wbXL As Excel.Workbook
        Dim wbsXL As Excel.Workbooks
        Dim shXL As Excel.Worksheet
        Dim Checker As Integer

        appXL = CreateObject("excel.application")
        appXL.Visible = True

        wbsXL = appXL.Workbooks
        wbXL = wbsXL.Open("D:\Некорректные Переключения\Base.xlsx", , , , 12121)
        shXL = wbXL.ActiveSheet
        Checker = shXL.Cells(1, 1).value()

最好的问候和感谢!
2个回答

10

那是因为.Cells()返回一个对象。

你可以尝试在另一步将其转换为Excel的Cell对象,或者你可以尝试这样做(例如):

shXL.Range("A2").Value

转换后将是:

Dim xRng As Excel.Range = CType(shXL.Cells(3,3), Excel.Range)
Dim val As Object = xRng.Value()

还可以这样使用:shXL.Cells(3,3) = "示例文本" - altan yuksel

4

使用Excel互操作性时,很多情况下返回值的形式将是一个Object,因此您需要将其转换为正确的类型以获取其实际属性。

因此,请执行以下操作(我的VB有点生疏,可能不完全正确)...

Dim rng as Excel.Range

rng = CType(shXL.Cells(1, 1), Excel.Range)
Checker = rng.Value

注意:我已将其分成两行,因为在使用Office互操作(例如,Worksheet.Cell.Value)时不能使用双点引用,因为这会导致无法释放的对象,从而导致Excel关闭不正确的问题。
注意2:.Value属性也返回一个对象,所以您可能也想要进行转换。

嗨,MrBlue,您提到的双点引用在哪里可以获取更多信息? - Ama
1
@Ama多年来我没有使用过Excel交互,因此无法为您指向当前的信息源(除了建议进行谷歌搜索)。话虽如此,尽管这种做法已经广泛存在,但似乎这不是最好的建议-请参见Hans Passant的这篇文章 - MrBlue
事实上,从您指出的帖子来看,双点规则似乎只是一个谬论。 - Ama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接