【问题标题】:Reading an Excel workbook from Access从 Access 读取 Excel 工作簿
【发布时间】:2011-05-17 07:05:50
【问题描述】:

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

(例如,我遍历工作表并打印它们的名称)

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

【问题讨论】:

  • 阅读完工作表后,您想对它做什么?这往往会限制如何做的选择。
  • 大卫,您没有机会阅读我的回复吗?

标签: excel ms-access vba


【解决方案1】:

什么是最好的很大程度上取决于你想做什么。如果 Excel 中的数据是结构化的,并且您希望导入或操作,通常最好使用带有 IN 关键字的查询,或者更简单地说,链接 Excel 命名范围、范围或完整的工作表。

通过 VBA 链接
http://msdn.microsoft.com/en-us/library/aa141565(office.10).aspx

可以使用 ADo Schema 获取工作表和命名范围的完整列表。

查询
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

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

【讨论】:

  • 感谢您的全面回答。就我而言,我想阅读某些范围的工作表并处理这些数据。我没有具有相同类型数据的整齐列和行,否则我使用了 DoCmd.TransferSpreadsheet
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多