我正在尝试使用来自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通常不是处理大量数据的正确工具。在这种情况下,我受到预定义的工作流的束缚,该工作流有时确实涉及使用工作表,因此恐怕无法解决...
答案 0 :(得分:0)
感谢Freeflow,我找到了解决方案。 VBA过度设计。剪切格式并使用
sCSV = sCSV & MyArray(n, M) & sDelimiter
反而有效。甚至不需要cstr()
答案 1 :(得分:0)
您需要这样的Format函数:
Format(MyArray(n, M),"#")
这将仅强制数字出现在结果字符串中。如果您有小数,则使用“#。#”;但是,即使没有小数位,句点(“。”)也将始终出现在输出中。