访问/Excel:方法对象范围结束失败



我有一个处理和导入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或其他东西?不知道。

最新更新