我有一个导入电子表格的宏,如下所示:(此电子表格是从基于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导入成功。我不能让职员每周都经历这个过程 - 任何方法都可以避免这种情况吗?可能是基于网络的应用程序的初始导出?
答案 0 :(得分:1)
DoCmd.TransferSpreadsheet
拒绝导入您的.xls
文件,因为它实际上不是.xls
文件,而是一个已获得.xls
文件扩展名的HTML文件。提供“假”文件扩展名是我见过的其他“开发人员”使用的技巧,这真的是一个坏主意(出于我们在这里看到的原因)。
如果上游系统的管理员不愿意做正确的事情并修复他们的代码以生成真正的 .xls
文件,那么请尝试将“.xls
”文件重命名为.htm
并使用
DoCmd.TransferText acImportHTML, ...
答案 1 :(得分:0)
将电子表格导入Access时,我也遇到了3274错误。我一直在使用这个宏。
解决方案是压缩和修复Access数据库。
答案 2 :(得分:0)
我遇到了同样的问题以及另一个问题(办公室2016 x64):从excel粘贴到访问凸起'剪贴板上的数据已损坏,...'错误。我找到了一种解决方法,点击访问主页选项卡粘贴部分的右下方按钮,打开剪贴板窗格。 在如上所述打开Clipborad Pane之后,我的DoCmd.TransferSpreadsheet令人惊讶地工作得很好。 我不知道为什么,但它可以帮助那些有同样问题的人和那些试图找到真正解决方案的人。