2014-01-27 54 views
0

我有一个导入电子表格的宏,如下所示:(此电子表格是从基于Web的应用程序导出的,并且在初始导出期间,所选格式97-2003)导入.xls到Access .mdb:外部表格不是预期格式

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的应用程序导出?

+0

你有没有试过在记事本(或类似的)中打开奇怪的文件,看它是否真的只是一个扩展名为“.xls”的HTML文件? –

+0

当我这样做,我得到我的4个标题和〜100行数据,但有各种HTML分区 –

+0

该文件是否包含HTML'

'标签? –

回答

1

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

如果上游系统田埂在做正确的事和固定他们的代码产生真正.xls文件,然后尝试重命名“.xls”文件.htm并导入它的守护者使用

DoCmd.TransferText acImportHTML, ... 
+0

我会试试看。即使是'.htm',它仍然应该导入适当的列名和适当的列名? –

+0

@TrevorD您可以手动运行导入过程并创建一个导入规范(就像使用CSV和其他文本文件一样) –

0

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

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

0

我有同样的问题以及另一个问题(办公室2016 x64):从excel粘贴访问提出的'剪贴板上的数据已损坏,...'错误。我通过单击访问主页选项卡的粘贴部分中的右下角按钮,打开剪贴板窗格,找到了解决方法。 如上所述打开Clipborad窗格后,我的DoCmd.TransferSpreadsheet令人惊讶地工作正常。 我不知道为什么,但它可以帮助那些有同样问题的人和那些试图找到真正解决方案的人。

相关问题