如何将长号从csv导入excel而不转换为VBA中的科学记数法

Zul*_*u Z 14 excel vba excel-vba

我使用下面的代码打开了分号分隔的txt文件,并且在保存到excel后,长帐号显示为科学记数,无论格式化为该列的文本.

我在这做错了什么?

    Application.ScreenUpdating = False
    Workbooks.OpenText fileName:=Filetxt, Origin:=xlWindows, StartRow _
    :=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _
    Space:=False, Other:=False, Local:=True, _
    FieldInfo:=Array(Array(1, 4), Array(2, xlTextFormat)
    'Save text file as csv file
    Set wb = ActiveWorkbook
    Application.DisplayAlerts = False
    wb.SaveAs fileName:=fileXls, FileFormat:=6, _
    ReadOnlyRecommended:=False, _
    CreateBackup:=False
    Application.DisplayAlerts = True
    wb.Close savechanges:=True
Run Code Online (Sandbox Code Playgroud)

在txt文件中记录如下:2011-12-21; 100,00;"21375000120000010020601764"

当我打开新保存的文件时,我看到2.117500012E + 25而不是那个号码.这有什么不对?

小智 31

我将产品导入excel文件,条形码将作为科学记数法出现(例如5.4265E + 12)

这意味着当我将文件转换为csv文件以上传细节时,csv没有正确读取条形码并将其更改为52862300000等.

打击它:

  • 作为Excel工作表打开(如果您不能作为一个单独打开,则转换)
  • 突出显示(条形码/科学记数法)列
  • 进入数据/文本到列
  • 第1页:检查'分隔'/下一步
  • 第2页:选中"标签"并将"文本限定符"更改为"/下一步"
  • 第3页:检查'文字'而不是'一般'

这应该将它们全部转换为长数字.然后,您可以将其另存为CSV文件,并且不会将数字转换/格式化为科学数字.

希望这可以帮助!!

  • 此方法仍然不会检索已删除的前面的零。我有一个从 MySQL 导出的 ID 列表,其中一些以零开头。我很惊讶 Excel 能做到这一点。 (2认同)

pet*_*tra 10

不要直接在 Excel 中打开文件,而是使用以下命令导入文件

Data --> From Text/CSV

并使用向导将列的类型指定为文本。

在“数据类型检测”下拉框中,选择Do not detect data types


Tim*_*ams 3

在 Excel 中,数字的精度限制为 15 位。您的示例数字太大,Excel 无法准确表示 - 这可能解释了如何转换为科学记数法。

您应该将该列作为文本而不是数字导入 Excel:这样您就不会丢失任何精度。

编辑:如果您在录制宏时逐步执行“从文本打开”过程,您应该得到如下结果:

Workbooks.OpenText Filename:= Filetxt, Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
        , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 5), Array(2, 1), _
        Array(3, 2)), TrailingMinusNumbers:=True
Run Code Online (Sandbox Code Playgroud)

该过程中有一个步骤允许您选择每列中的数据类型。

我认为你的“FieldInfo”参数有点偏离:你应该有 3 列,但你已将 col2 标记为文本......