使用Access VBA获取表中的行数而不使用Excel引用

时间:2015-11-30 13:35:07

标签: excel vba ms-access access-vba

我正在尝试从MS Access编辑Excel文件而不使用Excel作为参考。我找到了一个有助于解决这个问题的答案in this question。我使用Objects而不是使用对Excel的引用。这似乎在大多数情况下都有效,但是我没有从Excel中获取所有需要的功能来计算表格上的行数。我的代码片段如下:

    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

我已经尝试了许多不同的方法来解决这个问题,例如重写行,更改工作表名称。我似乎无法找到有关此方案的任何文档。我很感激任何帮助。

1 个答案:

答案 0 :(得分:2)

如果没有对Excel类型库的引用,Access VBA将不知道名为常量xlUp的Excel。

您可以避免提供常量值-4162而不是常量名称的错误。或者在VBA代码中定义常量......

Const xlUp As Long = -4162

作为@cboden suggested,在代码模块的声明部分中包含Option Explicit。然后,当您从VB编辑器的主菜单运行Debug-> Compile时,它将提醒您有关无法识别的名称的任何类似问题。