在 VBA 中将 Excel 单元格中的数值写入文本文件,无需科学计数法

在 VBA 中将 Excel 单元格中的数值写入文本文件,无需科学计数法

我在使用 Excel 中的 VBA 模块时遇到了一些问题。我有一个脚本,它引用电子表格中的单元格,并将逗号分隔行中的值写入文本文件。

我的做法可以归结为:

Dim line_data(0 to 1) As String
line_data(0) = SheetNameVar.Cells(7, "C").Value
line_data(1) = SheetNameVar.Cells(8, "C").Value

Dim line As String
line = Join(line_data, ",")

TextStreamNameVar.WriteLine line

一切都按预期运行,但如果小数点后有零,我就会不断将以科学计数法写入文本文件。例如,

3.77265350125136E-03,0.169769407556311

我将工作表显示为小数点后六位的小数,但这似乎并不影响工作表的书写。

我似乎找不到任何关于 Excel VBA 在写入文本流时转换值符号的信息。有没有办法防止这种情况发生?理想情况下,它不会依赖于工作表格式,因此我可以在那里显示较低的精度以提高可读性。但我需要这些值在我的文本文件中显示如下:

.00377265350125136,0.169769407556311

提前感谢你的帮助!

答案1

更改 Excel 工作表本身的格式不会影响这里的任何内容,因为您仅提取数据并将其放入变量中。

您可以使用自定义格式字符串强制显示不带科学计数法的值,如下所示:

line_data(0) = Format(Sheets(1).Cells(7, "C").Value, "0.##############################")
line_data(1) = Format(Sheets(1).Cells(8, "C").Value, "0.##############################")

您至少需要#与要显示的字符数一样多的字符。这样格式化将允许较短的数字显示为其实际长度,但如果您输入的#数字少于您的数字,则剩余位置将被截断。如果您想强制所有数字的长度相同,您可以使用0代替#,它会用零填充较短的数字。同样,如果您不想在小数点前加 0,请将其更改为#

相关内容