如何将打印的小数点分隔符设置为与系统设置不同的文件
在Excel 2010中使用VBA我想打印工作表中的单元格的内容,这是一个十进制数字到一个文件。 我正在使用'打印#'语句。 我在逗号“,”是系统宽度小数点分隔符的环境中工作。 对于打印输出,我希望点'。'是小数点分隔符。
以下代码不起作用:
Public Sub printDecimal() Application.UseSystemSeparators = False Application.DecimalSeparator = "." Open "testfile.txt" For Output As #1 Print #1, ActiveSheet.Range("A1").Value Close #1 Application.UseSystemSeparators = True End Sub
Print#语句的文档说:
所有使用Print#写入文件的数据都是国际化的。 也就是说,使用适当的小数点分隔符正确格式化数据。
当我更改Windows 7企业控制面板中的系统范围设置时,我得到所需的输出,但这不是我想要的。
由于您使用的是macros,因此您可以直接控制输出到文本文件的材料:
Public Sub printDecimal() Dim st As String Close #1 Open "C:\TestFolder\testfile.txt" For Output As #1 st = Range("A1").Text st = Replace(st, ",", ".") Print #1, st Close #1 End Sub
使用.Text属性可以获得单元格的所见即所得值。 其余的只是string操作。
编辑#1:
发布代码不起作用的原因是应用Application.DecimalSeparator类似于应用格式……底层的值不会改变。 运行这个来看看区别:
Sub demo() Dim st As String, st2 As String Application.UseSystemSeparators = False Application.DecimalSeparator = "|" Close #1 Open "C:\TestFolder\testfile2.txt" For Output As #1 Print #1, ActiveSheet.Range("A1").Value & vbCrLf & ActiveSheet.Range("A1").Text Close #1 Application.UseSystemSeparators = True End Sub