【问题标题】:How Do I Convert an Excel XLS to an Access MDB using Excel VBA如何使用 Excel VBA 将 Excel XLS 转换为 Access MDB
【发布时间】:2010-10-28 17:27:38
【问题描述】:

我需要使用 Excel 中的 VBA 将 Excel 工作簿加载到 access 中并将其传输到数据库。

Dim acc As New Access.Application
acc.OpenCurrentDatabase "C:\Test.xls"

我做到了,Excel 崩溃了,必须重新启动。我的计划是使用以下内容,但我做不到。

acc.DoCmd.TransferDatabase

有什么想法吗?我已经用谷歌搜索了几天,但一无所获。

*编辑:感谢到目前为止的回复
不幸的是,我绝对必须使用 Excel VBA。有一个 Excel 电子表格,其中包含一堆空列,Jet 引擎将这些空列识别为已定义的列,实际上太多 > 255(或者它是否 > 256?)。出于任何原因,我不想打开 Excel 工作表(这在网络上花费的时间太长了)。我没有正确格式化或清理它的选项或选择。正如大家所说,将 XLS 电子表格转换为访问内部的 MDB 数据库很容易,但这不是一种选择。所以就像我说的,我需要在 Excel 中使用 VBA 来操作访问对象,将 XLS 工作簿转换为 MDB 数据库;一旦我有了这个,剩下的就是蛋糕了。非常感谢!我喜欢这个网站。

【问题讨论】:

  • 为什么必须使用 Excel 来执行此操作?微软似乎建议从 Access 加载 Excel 文件。
  • 这是错字 acc.OpenCurrentDatabase "C:\Test.xls" 吗?当然你的意思是 acc.OpenCurrentDatabase "C:\Test.mdb" ?
  • 布雷特维尔,欢迎来到 StackOverflow。你能编辑你的问题并给我们更多细节吗?你能一步一步告诉我们你想做什么吗?您是否尝试将 Excel 工作表导入 Access 数据库?

标签: database excel ms-access vba


【解决方案1】:

如果您能够在 Microsoft Access 中使用 VBA,则此任务很简单;例如:

DoCmd.TransferSpreadsheet , , _
"tblImportFromExcel","C:\path\to\myfile.xls", True, "A1:B200"

TransferSpreadsheetdocumentation.

【讨论】:

  • 我同意这是最简单的,但原发帖人就不能从 Excel 中制作和控制一个 Access 对象吗?
  • @power:将其发布为答案;如果有代码示例,我会投票赞成! :-)
【解决方案2】:

Adam Bernier 建议的解决方案有什么问题(PowerUser 补充说在 Excel 中使用访问对象);您的最后一条评论是在这些建议之后发表的,而您没有回复。

Dim acc As New Access.Application
acc.OpenCurrentDatabase "C:\Test.mdb"

acc.DoCmd.TransferSpreadsheet _
    TransferType:=acImport, _
    Spreadsheettype:=acSpreadsheetTypeExcel8, _
    TableName:="tblImportFromExcel", _
    Filename:="C:\path\to\myfile.xls", _
    HasFieldNames:=True, _
    Range:="A1:B200"

(根据需要进行调整,尤其是 HasFieldNames 和 Range)。如果这不起作用,那么您的 Excel-Sheet 可能确实有问题。

我能想到的唯一另一件事(但这意味着打开文件)是将 Excel-Sheet 保存为 XML,并通过 XSLT 将值转换为更合适的格式,然后导入生成的 XML。但这可能有点过头了(您的文件有多复杂,需要多久进行一次此导入)。

HTH 安德烈亚斯

【讨论】:

  • 需要在 Excel 中
  • @bretville,这 is 来自 Excel (尽管如果它来自例如 Word 并没有什么不同。只需确保在 VBA 中您已将引用设置为MS Access,以便您可以使用它的对象模型。您是否尝试过该示例?
猜你喜欢
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 2015-08-27
相关资源
最近更新 更多