2014-02-05 105 views
2

我一直在嘗試將Excel電子表格導入MS Access 2013(通過接口)作爲表格,併爲整數字段「SegmentID」生成「類型轉換失敗」錯誤類型。導入Excel電子表格時,MS Access 2013類型轉換失敗

在Excel電子表格中檢查失敗的行號時,它們確實與其他所有行一樣。 即使重新輸入並將整列設置爲數字(並刪除小數位)仍會產生相同的錯誤。我需要爲許多電子表格執行此導入操作,並且幾乎每個我都嘗試從電子表格中隨機選擇幾個到幾千個同樣的錯誤。電子表格是.xlsx格式。

任何想法的將不勝感激。我已經想到了手工做這個的東西,如:

DoCmd.RunSQL "CREATE TABLE TableName ([Date] DATETIME, [Name] TEXT, ETC..." DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "TableName", "C:\ExcelData.xlxs"

+0

您能否提供一個示例複製問題的.xlsx文件? –

+0

這是[電子表格](https://www.dropbox.com/s/ukd4rz9u44yz3s5/Wildlife.xlsx)。對於這個特定的表單有一些錯誤,但類型仍然相同。由於某些數據可能是數據敏感材料,因此我可能無法生成其他數據。這裏還有[Spreadsheet Import Errors](https://www.dropbox.com/s/gifnjx2edobr33d/Wildlife_ImportErrors.xlsx)。 – JaredTS486

+0

我建議將xls轉換爲csv,看看發生了什麼與不同的文件格式 – koriander

回答

4

整型的範圍從-32,768到+32,767。您的細分ID看起來像需要一個LONG整數。你的電子表格會出現在33581上,這會讓你超過整數範圍。

+1

我同意。我剛剛在Access 2010中測試了一個導入,並且如果Access表中的[SegmentID]字段被定義爲「Long Integer」,則不會發生錯誤。 –

+0

某些導入錯誤發生在SegmentID爲680的行中。那我檢查了導入的表格和SegmentID的數據類型,它確實是一個長整數。 (編輯,我看到你的@GordThompson,我會再試一次) – JaredTS486

+2

我的錯誤,我似乎無法重新創建錯誤,其中段在該範圍內,並使用長整數修復導入錯誤。謝謝你的幫助。 – JaredTS486

1

正如我前面提到的,我將嘗試手動創建表格並導入數據。所有數據都將傳輸到創建的表格,而不會出現錯誤或數據丟失。在MS Access中的「Visual Basic」視圖中,點擊Ctrl + G,您可以使用此代碼。

DoCmd.RunSQL ("CREATE TABLE Wildlife (ID COUNTER NOT NULL PRIMARY KEY, SegmentID INT, RouteID TEXT, Type TEXT, Subtype TEXT, Subtype2 TEXT);") DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Wildlife", "C:\PathToFile\Wildlife.xlsx",-1

ID COUNTER NOT NULL PRIMARY KEY添加的自動編號字段的ID是主鍵

在第二Do.Cmd結束時的-1參數告訴訪問,在該領域中的第一行是列名。 DoCmd.TransferSpreadsheet Method (Access)