所以我从一个Excel文件导入一个巨大的零件编号列表(从其他地方的CSV报告转换而来)与VBA。在导入之前调用excel工作簿来准备数据,包括以下代码,这些代码格式化部件号以确保部件号不会丢失任何信息(最近才发现这一点):
Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 2), TrailingMinusNumbers:=True
制作excel表后,我使用以下方法将它们导入表:
DoCmd.TransferSpreadsheet acImport, 5, "PartNumberX", "D:\Target\Import Data.xlsx", -1, "PartNumberX!" & PartDim
在excel文件和Access表之间的某个地方,没有字母且长度超过10位的部件号将被转换为科学记数法并丢失数字的最后几位数字。我可以确认excel文件中没有科学记法,所以我很确定它在导入过程中的某个地方发生。
非常感谢任何帮助!
- 编辑:
使用DoCmd.TransferSpreadsheet
时,它正在创建表“PartNumberX” - 它尚不存在。
-Update:
所以我认为导入新表可能会导致此问题。在将部件号字段作为文本字段导入预定义表格后,使用科学记数法防止访问表单没有任何区别。
答案 0 :(得分:0)
看起来我有一个愚蠢的...我认为,因为我在Excel中格式化原始的部件号列表是正确的,从中复制的数据也将被正确格式化。显然这是不正确的。我用了
Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 2), TrailingMinusNumbers:=True
格式化部件号列表的其他迭代,现在工作正常。
始终是让你感到兴奋的小事 - -_-'