我希望我的Access(2007)应用程序读取给定Excel(2007)工作簿的不同工作表中的信息。在互联网上,我看到很多例子都是通过使用DAO / ADO / Excel对象模型/ VBA来实现这一点的,我认为这样做最让人困惑。
现在我这样做:
Dim ExcelApp As Excel.Application
Dim ExcelWorkbook As Excel.Workbook
Dim ExcelWorkSheet As Excel.Worksheet
Set ExcelApp = CreateObject("Excel.Application")
Set ExcelWorkbook = ExcelApp.Workbooks.Open("C:\Temp\test.xls")
For Each ExcelWorkSheet In ExcelWorkbook.Worksheets
MsgBox ExcelWorkSheet.Name
Next
ExcelWorkbook.Close (False)
ExcelApp.Quit
Set ExcelWorkbook = Nothing
Set ExcelApp = Nothing
(作为一个例子,我遍历工作表并打印他们的名字)
这是正确的做法吗?这是最有效的方式吗? (如果有“最有效的方式”)
答案 0 :(得分:1)
什么是最好的取决于你想做什么。如果Excel中的数据是结构化的,并且您希望导入或操作,通常最好使用带有IN关键字的查询,或者更简单地说,链接Excel命名范围,范围或完整工作表。
通过VBA链接
http://msdn.microsoft.com/en-us/library/aa141565(office.10)的.aspx
可以使用ADo Schemas获取工作表和命名范围的完整列表。
查询
http://stackoverflow.com/questions/2689087/where-in-query-with-two-recordsets-in-access-vba/2689151#2689151
如果您希望通过Access从Excel更新说,SQL服务器,ADO可能是一个不错的选择。
ADO
http://stackoverflow.com/questions/2086234/query-excel-worksheet-in-ms-access-vba-using-adodb-recordset/2086626#2086626
如您的问题所示,自动化通常仅在您希望进行大量格式化和/或更新单个单元格和小范围时才有用。