如何在Access VBA中引用Excel对象?

Pab*_*blo 15 vba ms-access-2007

为了能够使用Access 2007 VBA脚本中的Excel对象和常量,我必须做出哪些声明?

Dim wb As Workbook
Run Code Online (Sandbox Code Playgroud)

要么

Set objExcelApp = New Excel.Application
Run Code Online (Sandbox Code Playgroud)

要么

.Borders(xlEdgeBottom)
Run Code Online (Sandbox Code Playgroud)

谢谢

Dav*_*ton 31

我不同意这两个答案.根本不创建引用,但使用后期绑定:

  Dim objExcelApp As Object
  Dim wb As Object

  Sub Initialize()
    Set objExcelApp = CreateObject("Excel.Application")
  End Sub

  Sub ProcessDataWorkbook()
     Set wb = objExcelApp.Workbooks.Open("path to my workbook")
     Dim ws As Object
     Set ws = wb.Sheets(1)

     ws.Cells(1, 1).Value = "Hello"
     ws.Cells(1, 2).Value = "World"

     'Close the workbook
     wb.Close
     Set wb = Nothing
  End Sub
Run Code Online (Sandbox Code Playgroud)

您将注意到,上面代码的唯一区别是变量都声明为对象,并使用CreateObject()实例化Excel实例.

无论安装什么版本的Excel,此代码都将运行,而如果安装了不同版本的Excel,或者安装在其他位置,则使用引用很容易导致代码中断.

此外,可以将错误处理添加到上面的代码中,以便在Excel实例的初始实例化失败时(例如,因为未安装Excel或未正确注册Excel),您的代码可以继续.使用引用集,如果未安装Excel,则整个Access应用程序将失败.

  • 我完全同意这一点,但是在最初开发代码时提前绑定以获得intellisense的好处,然后在一切正常后转换为后期绑定是有用的. (4认同)

mar*_*arg 13

首先,您需要为Microsoft Excel对象库设置引用(菜单:工具 - >引用),然后您可以访问所有Excel对象.

添加参考后,您可以完全访问所有Excel对象.您需要在所有内容之前添加Excel,例如:

Dim xlApp as Excel.Application
Run Code Online (Sandbox Code Playgroud)

假设您在表单中添加了一个Excel工作簿对象,并将其命名为xLObject.

以下是访问此对象的工作表并更改范围的方法

Dim sheet As Excel.Worksheet
Set sheet = xlObject.Object.Sheets(1)
sheet.Range("A1") = "Hello World"
Run Code Online (Sandbox Code Playgroud)

(我从我对这个问题的回答中复制了以上内容)

在Access中使用Excel的另一种方法是通过访问模块启动Excel(shahkalpesh在他的回答中描述它的方式)