SML*_*LBW 5 import excel ms-access vba types
我在 Microsoft Access 数据库中有一个表,我每天从每日性能报告中将数据导入其中。导入数据中的特定字段(指站点名称)是大多数报告的源数据中的文本字段,但是对于一个报告,它是文本字段(例如站点 00415)和数字字段(例如 00415)之间的混合。当数据存储在 Excel 中时,我强制数字站点为文本,因为其中一些站点有前导零。
Access 表的数据类型为Text(和格式@应该是相关的),但是当导入带有数字站点的报告时,我在具有文本条目的行上出现导入错误,因为它试图将整列导入为数字而不是文本。
有没有办法强制将字段作为文本导入,即使文件的第一行(我认为这是字段类型的访问基础)是数字?
或者,我是否应该将字段类型更改为可以处理文本和数字的其他类型,但重要的是将数字保持原样而不以任何方式进行格式化。
对于它的价值 - 我一直通过保存的导入方法导入数据,然后通过使用以下脚本编写脚本并在两种导入方法中都遇到了这个问题:
Option Compare Database
Sub import_test()
Dim strXls As String
strXls = "C:\Users\me\Desktop\IMPORT.xlsx"
DoCmd.TransferSpreadsheet acImport, , "ImportDB", _
strXls, True, "A1:Z100"
End Sub
Run Code Online (Sandbox Code Playgroud)
默认情况下,Access 将仅检查前 24 行数据以确定建议的字段类型。
如果前 24 行数据均为数字,则 Access 可能猜测字段的数据类型不正确。该数据类型与“保存的导入”一起保存,并且 Access 使查看已保存的字段类型变得困难。
听起来您的表格已经设置了Short Text格式@。这非常适合您的需求。
您需要确保 Excel 文件的值具有文本格式 - 特别是带有前导零的值。然后,您需要再次运行“导入 Excel 文件向导”,但这一次请务必显式设置每列的字段类型,特别注意有问题的字段 - 您可能会发现 Access 假定该字段应该是Double,当它应该Short Text。
完成此操作后,您将必须使用该DoCmd.RunSavedImportExport方法,因为该TransferSpreadsheet方法不允许您为 Excel 文件指定任何字段类型详细信息。
DoCmd.RunSavedImportExport "MyImport"
Run Code Online (Sandbox Code Playgroud)
这是文本字段中的一些文本格式的值。
如果您遇到持续的问题,您可能必须将 Excel 文件导出为文本文件格式,然后使用 Access 导入该文件,但我怀疑您是否需要这样做。