VBA:从数组到csv,将长数字保留为文本

时间:2019-01-05 13:48:55

标签: arrays excel vba csv

我正在尝试使用来自Create CSV from array in VBA的代码将数组直接导出到csv文件。

该数组包含我需要保留为文本的大量数字,但通常Excel会强制对数据进行科学计数。

我有一些技巧通常可以保留长文本格式,但在这里不起作用。

我尝试过在这里修补:

   For n = 1 To UBound(MyArray(), 1)
    sCSV = ""
    For M = 1 To UBound(MyArray(), 2)
      sCSV = sCSV & Format(MyArray(n, M)) & sDelimiter
    Next M
    sCSV = Left(sCSV, Len(sCSV) - 1) 'remove last Delimiter
    Print #7, sCSV
  Next n

使用

sCSV = sCSV & "'" & Format(MyArray(n, M)) & sDelimiter

sCSV = sCSV & cstr(Format(MyArray(n, M))) & sDelimiter

sCSV = sCSV & Format(MyArray(n, M), "General") & sDelimiter

但没有一个能达到预期的效果

MyArray中的值均具有正确的格式。

任何建议

是的,Excel / VBA通​​常不是处理大量数据的正确工具。在这种情况下,我受到预定义的工作流的束缚,该工作流有时确实涉及使用工作表,因此恐怕无法解决...

2 个答案:

答案 0 :(得分:0)

感谢Freeflow,我找到了解决方案。 VBA过度设计。剪切格式并使用

sCSV = sCSV & MyArray(n, M) & sDelimiter

反而有效。甚至不需要cstr()

答案 1 :(得分:0)

您需要这样的Format函数:

Format(MyArray(n, M),"#")

这将仅强制数字出现在结果字符串中。如果您有小数,则使用“#。#”;但是,即使没有小数位,句点(“。”)也将始终出现在输出中。