尝试在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!
答案 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
属性也作为对象返回,因此您可能也想要转换它