如何在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