【问题标题】:Why do I get error 3073 in VBA when using "TransferSpreadsheet acImport" but not when using "TransferSpreadsheet acLink"为什么在使用“TransferSpreadsheet acImport”时在 VBA 中出现错误 3073,但在使用“TransferSpreadsheet acLink”时却没有
【发布时间】:2021-07-20 22:58:06
【问题描述】:

我只想将一些 Excel 工作表导入 MS Access 以组合几个月的数据(每个都在一个 .xlsx 文件中)。只要我使用链接 .xlsx 文件,它就可以工作

DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel12, tableName, fileName, True, "A4:L23"

但在使用 acImport 选项时不会

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, tableName, fileName, True, "A4:L23"

当我将选项从链接更改为导入时,我收到“错误 3073 - 操作必须使用可更新查询”。

由于我想添加一个包含数据适用的月份和年份的列,因此我需要能够添加一个使用链接表无法做到的变量。

感谢您的建议或对我做错的解释。

韩国, 马丁

【问题讨论】:

  • 完整的错误信息是什么?
  • 亲爱的安德烈,感谢您的提问!完整的错误消息是:操作必须使用可更新的查询。
  • 在导入之前确保tableName在您的数据库中不存在。

标签: sql vba database ms-access


【解决方案1】:

你可能需要使用acSpreadsheetTypeExcel12Xml:

AcSpreadSheetType enumeration (Access)

【讨论】:

  • 亲爱的古斯塔夫,我尝试了你的建议-谢谢!不幸的是,我仍然遇到同样的错误(操作必须使用可更新的查询)。
  • 代码在这里工作正常,所以其他事情正在发生,因为不涉及任何查询。仔细检查您的表和查询名称。
【解决方案2】:

安德烈和古斯塔夫,

感谢两位的帮助!!真的很感激!

我认为我应该在新的 Access DB 中测试代码,并且代码确实在那里工作。当您在同一数据库中的链接和导入之间切换时,似乎会导致该问题。 在新数据库中,我可以在导入和链接之间切换(DoCmd.TransferSpreadsheet 语句中的 acLink/acimport),但在运行 vba 代码之前,必须在 Access 中删除导入或链接的表。也许这对你们大多数人来说是显而易见的,但对我来说不是:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多