从Access读取Excel工作簿

时间:2010-11-29 13:31:52

标签: excel ms-access vba

我希望我的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

(作为一个例子,我遍历工作表并打印他们的名字)

这是正确的做法吗?这是最有效的方式吗? (如果有“最有效的方式”)

1 个答案:

答案 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

如您的问题所示,自动化通常仅在您希望进行大量格式化和/或更新单个单元格和小范围时才有用。