【发布时间】:2014-08-10 08:09:08
【问题描述】:
因此,我正在使用 VBA 从 Excel 文件(从其他地方的 CSV 报告转换而来)导入大量零件编号。在导入之前调用 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” - 它尚不存在。
-更新:
所以我认为导入新表可能会导致此问题。将零件编号字段作为文本字段导入到预定义表中后,对于防止使用科学计数法访问表单没有任何区别。
【问题讨论】:
-
能否提供一个会发生这种情况的数据集,好吗?我自己也看到过这种情况,但很难重现它。如果你能提供几行数据可以粘贴到 Excel 书中,那将非常有用。
-
这些将是科学记数法:957010802508 957010802008 957010801608 - 这些都可以:9405008080 9405008040 9405006080 91640SM4 0030 91626SYA 0030SYA 0030
-
嗯,这很奇怪,对我来说很好用。也许数据的顺序很重要。我什至尝试了几种方法,但似乎还可以。
-
@ VBlades - 当你测试它时,你是使用传输电子表格到一个已经存在的表中还是让它创建表?我最初忘记提及这一点,但它正在创建一个名为“PartNumberX”的表,该表尚不存在。
标签: excel ms-access vba ms-access-2007