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

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

Dim wb As Workbook 

要么

 Set objExcelApp = New Excel.Application 

要么

 .Borders(xlEdgeBottom) 

谢谢

首先你需要设置一个参考(菜单:工具 – >参考)到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" 

(我从这个问题的答案中复制了上面的内容)

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

我不同意这两个答案。 根本不要创build引用,而是使用后期绑定:

  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 

你会注意到,上面的代码唯一的区别是variables都被声明为对象,并用CreateObject()实例化Excel实例。

无论安装何种版本的Excel,此代码都可以运行,如果安装了不同版本的Excel,或者安装在不同的位置,则使用引用可能会导致代码崩溃。

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

在模块内部

 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