为了能够使用Access 2007 VBA脚本中的Excel对象和常量,我必须做出哪些声明?
Dim wb As Workbook
或
Set objExcelApp = New Excel.Application
或
.Borders(xlEdgeBottom)
由于
答案 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