导入Excel电子表格时MS Access 2013类型转换失败

时间:2014-02-05 19:14:40

标签: sql excel vba ms-access ms-access-2013

我一直在尝试将Excel电子表格导入MS Access 2013(通过界面)作为表格,并为字段“SegmentID”生成“类型转换失败”错误,该字段为整数类型。

  

在Excel电子表格中检查失败的行号时,它们确实是整数,就像所有其他行一样。   即使重新输入并将整列设置为数字(并删除小数位)仍然会产生相同的错误。我需要为许多电子表格执行此导入操作,我尝试的几乎每一个都有相同的错误,范围从整个电子表格中的少量到数千个。电子表格为.xlsx格式。

任何想法都将不胜感激。我曾想过用以下方法手动执行此操作:

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

2 个答案:

答案 0 :(得分:4)

整数范围从-32,768到+32,767。您的细分ID似乎需要一个LONG整数。您的电子表格似乎转到33581,这会使您超出整数范围。

答案 1 :(得分: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

第二个-1末尾的Do.Cmd参数告诉Access该字段中的第一行是列名。 DoCmd.TransferSpreadsheet Method (Access)