我有一个处理和导入Excel工作簿的访问数据库。它在历史上一直运行良好,但突然在所有工作簿上给我这个错误 - 即使是以前有效的工作簿:
-2147417851: Method 'End' of object 'Range' failed
导致问题的行是:
iLastCBRow = XlBook.Worksheets("4_CensusBlocks").Range("B16001").End(xlUp).Row
如果我在"即时"窗口中逐步浏览此行并输入
XlBook.Worksheets("4_CensusBlocks").Range("B16001").Value
它正确返回该单元格的值。
我认为访问数据库可能已损坏,因此我重新创建了它。同样的问题。我还手动强制修复 Excel 工作簿。我什至卸载并重新安装了Office。
现在在Windows 7上运行Office 2016 64位。
有谁知道问题可能是什么?谢谢
文件中有超过 16001 行。第一个命令
iLastCBRow = XlBook.Worksheets("4_CensusBlocks").Range("B16001").End(xlUp).Row)
将 iLastCBRow 设置为起始行。
尝试使用
iLastCBRow = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
相反
我仍然不明白为什么,但问题似乎在于使用 Excel 对象变量的早期绑定。一旦我到位
dim xl as object
dim xlbook as object
set xl = createobject("Excel.Application")
set xlbook = xl.workbooks.open(filename)
而不仅仅是
dim xlbook as excel.workbook
set xlbook = getobject(filename)
错误消失了。我全程只安装了Office 2016,所以也许更新使OLE服务器认为我安装了多个Office或其他东西?不知道。