从Excel导入访问类型转换失败



我正在尝试将Excel导入Access DB,由于类型转换失败,一些客户编号无法导入。这是66000个参赛作品中的12个。通常情况下,客户编号是一个数字,但这12个是字符串,如ABCDEFT001。我尝试将表的字段设置为"长文本"或"短文本",但它们仍然没有导入(仅导入ImportError表(。你知道我还能试什么吗?提前非常感谢!附言:我正在尝试使用DoCmd.TransferSpreadsheet导入

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Inv level", "Path/to/file.xlsb", True, "Sheetname!"

此策略链接到excel文件,而不是直接导入它,然后从中选择数据,并将需要它的任何字段强制转换为正确的数据类型。

Sub ImportFromExcel()
Dim pathToFile As String
Dim targetTableName As String
Dim sql As String
pathToFile = "C:PathToFile.xlsx"
targetTableName = "ImportResults"
'//create the link
DoCmd.TransferSpreadsheet acLink, _
acSpreadsheetTypeExcel12, _
targetTableName, _
pathToFile, _
True '//This part only if the excel file has field headers

'//import
sql = "SELECT Field1Name, CStr(CustNumber) AS CustNumber, Field3Name INTO NewImportTable FROM " & targetTableName
CurrentDb.Execute sql
'//remove the link
DoCmd.DeleteObject acTable, targetTableName
End Sub

***此代码的两个陷阱需要注意:

1( 在运行此代码之前,您应该删除任何名为"NewImportTable"的表,否则会出现"table Already Exists"错误。

2( 如果在删除链接之前此Sub中发生任何错误,则下次运行时会出现问题,因为它将创建一个名为"ImportResults1"的链接,因为"ImportResults"仍然存在。真正可怕的是,这里不会出现任何错误。它将创建"ImportResults1",然后在"ImportResults"上运行sql!!

最新更新