如何将打印的小数点分隔符设置为与系统设置不同的文件

在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