2014-01-27 51 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令人驚訝地工作正常。 我不知道爲什麼,但它可以幫助那些有同樣問題的人和那些試圖找到真正解決方案的人。

相關問題