VB.net Excel.worksheet()。cells()。Value

时间:2014-04-11 05:34:02

标签: vb.net excel vb.net-2010

尝试在Excel工作表中写入信息 但有一些奇怪的问题;)我看了谷歌的信息,但没有结果.. 所以请帮忙)

我添加引用Microsoft.excel 14.0对象库 并导入Microsoft.Office.interop

我需要从特定细胞中获取价值 所以我使用命令Checker = shXL.cells(1,1)。在这里,我没有价值...... 我只有这个(Equal / GetHashCode / GetType / toString) 所以问题是为什么我没有(.Value)for .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()

最诚挚的问候和THX!

2 个答案:

答案 0 :(得分:7)

因为.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()

答案 1 :(得分:3)

使用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属性也作为对象返回,因此您可能也想要转换它