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

时间:2011-04-20 10:59:44

标签: vba ms-access-2007

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

Dim wb As Workbook

Set objExcelApp = New Excel.Application

.Borders(xlEdgeBottom)

由于

3 个答案:

答案 0 :(得分:29)

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

  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

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

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

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

答案 1 :(得分:12)

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

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

Dim xlApp as Excel.Application

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

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

Dim sheet As Excel.Worksheet
Set sheet = xlObject.Object.Sheets(1)
sheet.Range("A1") = "Hello World"

(I copied the above from my answer to this question)

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

答案 2 :(得分:3)

在模块内

Option Explicit
dim objExcelApp as Excel.Application
dim wb as Excel.Workbook

sub Initialize()
   set objExcelApp = new Excel.Application
end sub

sub ProcessDataWorkbook()
    dim ws as Worksheet
    set wb = objExcelApp.Workbooks.Open("path to my workbook")
    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

sub Release()
   set objExcelApp = Nothing
end sub