如何将十进制分离器设置为打印以归档与系统设置不同



在excel 2010中使用vba我想在工作表中打印单元的内容,这是文件的小数号。我正在使用" Print#"语句。我正在逗号‘,是系统宽的小数分离器的环境中工作。对于打印输出,我希望要点´。

以下代码不起作用:

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#写入文件的所有数据都在国际上意识到;也就是说,使用适当的十进制将数据正确格式化分离器。

当我更改Windows 7 Enterprise Control面板中的系统宽设置时,我会得到所需的输出,但这不是我想要的。

由于您使用的是宏,您可以直接控制要输出的材料到文本文件:

Public Sub printDecimal()
    Dim st As String
    Close #1
    Open "C:TestFoldertestfile.txt" For Output As #1
    st = Range("A1").Text
    st = Replace(st, ",", ".")
    Print #1, st
    Close #1
End Sub

使用 .Text 属性允许您获取单元格值Wysiwyg。其余只是字符串操纵。

编辑#1:

发布的代码不起作用的原因是应用 application.decimalseparator 类似于应用格式……基础值不会更改。运行以查看区别:

Sub demo()
    Dim st As String, st2 As String
    Application.UseSystemSeparators = False
    Application.DecimalSeparator = "|"
    Close #1
    Open "C:TestFoldertestfile2.txt" For Output As #1
    Print #1, ActiveSheet.Range("A1").Value & vbCrLf & ActiveSheet.Range("A1").Text
    Close #1
    Application.UseSystemSeparators = True
End Sub

最新更新