【发布时间】:2015-12-01 01:27:51
【问题描述】:
我正在尝试从 MS Access 编辑 Excel 文件,而不使用 Excel 作为参考。我找到了一个答案 in this question 来解决这个问题。我没有使用对 Excel 的引用,而是使用对象。这似乎在大多数情况下都有效,但我没有从 Excel 中获得我需要的所有功能来计算表格上的行数。我的一个sn-p代码如下:
Dim xlBook As Object
Dim xlApp As Object
Dim xlSht As Object
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Some\Location.xlsx")
Set xlSht = xlBook.Sheets("SomeSheet")
tableRows = xlSht.Cells(xlSht.Rows.Count, 2).End(xlUp).Row
tableRows = xlSht... 行出现错误,内容如下:
Run-time error '1004':
Application-defined or object-defined error
我尝试了许多不同的方法来解决这个问题,例如重写行、更改工作表名称。我似乎找不到关于这种情况的任何文档。如有任何帮助,我将不胜感激。
【问题讨论】:
-
如果它在你的活动表上试试这个:
activesheet.cells(activesheet.rows.count, 2).end(xlup).row我不止一次遇到同样的问题,不是引用你设置的变量,而是直接引用为我修复它的对象否则尝试activeworkbook.sheet("Somesheet").cells(activeworkbook.sheet("Somesheet".rows.count, 2).end(xlup).row我知道它不漂亮,但它有效。至少它对我有用 -
如果将
xlUp替换为-4162会发生什么? -
我同意 HansUp ... xlUp 是 Excel 中定义的常量。如果您没有对对象库的引用并使用所谓的后期绑定,您必须自己声明/替换此常量。 PS:通常......模块顶部的 OPTION EXPLICIT 会为您提供明确的问题指示。
-
正如 cboden 所说 - 你必须替换你的常量。我发现最简单的方法是打开 Excel,例如,在 VBE 即时窗口中输入
?xlUp- 这将返回您需要的数字。 -
@HansUp,这就是问题所在。感谢您的帮助!