【发布时间】:2011-08-09 09:48:22
【问题描述】:
为了能够使用 Access 2007 VBA 脚本中的 Excel 对象和常量,我必须进行哪些声明?
Dim wb As Workbook
或
Set objExcelApp = New Excel.Application
或
.Borders(xlEdgeBottom)
【问题讨论】:
标签: vba ms-access-2007
为了能够使用 Access 2007 VBA 脚本中的 Excel 对象和常量,我必须进行哪些声明?
Dim wb As Workbook
或
Set objExcelApp = New Excel.Application
或
.Borders(xlEdgeBottom)
【问题讨论】:
标签: vba ms-access-2007
我不同意这两个答案。根本不创建引用,而是使用后期绑定:
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,您的整个 Access 应用程序将失败。
【讨论】:
首先您需要设置对 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 的另一种方法是通过 Access 模块启动 Excel(shahkalpesh 在他的回答中描述的方式)
【讨论】:
模块内部
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
【讨论】: