【发布时间】:2019-01-05 13:48:55
【问题描述】:
我正在尝试使用以下代码将数组直接导出到 csv 文件:Create CSV from array in VBA。
该数组包含我需要保存为文本的大量数字,但与往常一样,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 通常不是处理大量数据的正确工具。在这种情况下,我受到预定义的工作流程的约束,这些工作流程偶尔会涉及使用工作表,所以恐怕没有办法解决这个问题......
【问题讨论】:
-
参考this
-
试试 sCSV = sCSV & chr$(34) & Format(MyArray(n, M)) & chr$(34) & sDelimiter
-
嗨。 Dy Lee 一个 Freeflow。我感谢帮助。不幸的是,它并没有改变任何东西。它只是将截断的值放在引号中。
-
那么问题可能出在Format的使用上。尝试用 cstr(以及 chr$(34))替换格式。 Format 是一个相当繁重的函数,用于将数字简单转换为字符串。
-
sCSV = sCSV & CStr(MyArray(n, M)) & sDelimiter 成功了。谢谢你:)