【问题标题】:Importing .xls to Access .mdb: External Table is not in the expected format将 .xls 导入到 Access .mdb:外部表不是预期的格式
【发布时间】:2014-02-18 13:29:02
【问题描述】:

我有一个导入电子表格的宏,如下所示:(此电子表格是从基于 Web 的应用程序导出的,在初始导出期间选择的格式是 97-2003)

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "d2s_safety_tbl", _
"\\company.com\dfsroot$\Share\office_public\D2S\D2S\D2S_Scorecard\Source Data\D2S\D2S Safety.xls", True

导入 Access 时,我得到:

Run-time Error '3274': External table is not in the expected format.

当我打开这个 Excel 文件时,我得到一个对话框

"The file you are trying to open is in a different format than specified by the file extension..."

所以文件名是 .xls,我的电脑告诉我它是 97-2003 格式,但是一旦我打开文件并单击保存,它默认将其保存为网页格式,并可选择另存为 .xls .什么给了?

更新:如果我打开文件,然后另存为 .xls 格式(看似多余,但显然不是),它会询问我是否要覆盖现有文件,所以我这样做了。完成此操作后,VBA 导入成功。我不能让店员每周都经历这个过程——有什么办法可以避免这种情况?可能是基于 Web 的应用程序的初始导出?

【问题讨论】:

  • 您是否尝试过在记事本(或类似工具)中打开这个奇怪的文件,看看它是否真的只是一个带有.xls 扩展名的 HTML 文件?
  • 当我这样做时,我得到了我的 4 个标题和大约 100 行数据,但使用了各种 HTML 分区
  • 文件是否包含 HTML <table> 标签?
  • 它以<html><body><table border=1><tr><td style='font-weight: bold;'>CASE NUMBER</td><td style='font-weight: bold;'>PERSON HISTORY-EMPLOYEE NUMBER</td><td style='font-weight: bold;'>INJURY DATE</td><td style='font-weight: bold;'>RECORDABLE</td></tr> 开头,然后提供所有数据

标签: excel ms-access import vba


【解决方案1】:

我遇到了同样的问题以及另一个问题(office 2016 x64):从 excel 粘贴以访问引发“剪贴板上的数据已损坏,...”错误。我找到了一种解决方法,方法是单击访问主页选项卡粘贴部分的右下角按钮,打开剪贴板窗格。 如上所述打开 Clipborad 窗格后,我的 DoCmd.TransferSpreadsheet 出人意料地运行良好。 我不知道为什么,但它可能会帮助那些有同样问题的人和那些试图找到真正解决方案的人。

【讨论】:

    【解决方案2】:

    在将电子表格导入 Access 时,我也遇到了 3274 错误。我已经使用这个宏有一段时间了。

    解决方案是压缩和修复 Access 数据库。

    【讨论】:

      【解决方案3】:

      DoCmd.TransferSpreadsheet 拒绝导入您的.xls 文件,因为它不是真正的.xls 文件,它是一个已被赋予.xls 文件扩展名的HTML 文件。提供“假”文件扩展名是我见过的其他“开发人员”使用的一种技巧,这确实是一个坏主意(出于我们在这里看到的原因)。

      如果上游系统的维护者不愿做正确的事情并修复他们的代码以生成 真实 .xls 文件,然后尝试将“.xls”文件重命名为 .htm 和使用

      导入它
      DoCmd.TransferText acImportHTML, ...
      

      【讨论】:

      • 我会试试看的。即使.htm 它仍然应该导入适当数量的具有适当列名的列?
      • @TrevorD 您可以手动运行导入过程并创建导入规范(就像使用 CSV 和其他文本文件一样)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2010-11-11
      • 2016-07-04
      • 1970-01-01
      相关资源
      最近更新 更多