使用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 #写入文件的所有数据都是国际性的;也就是说,使用适当的十进制分隔符对数据进行适当的格式化。
当我在Windows 7企业控制面板中更改系统范围的设置时,我得到了所需的输出,但这不是我想要的。
发布于 2015-05-11 12:23:57
由于您使用的是宏,所以可以直接控制输出到文本文件的材料:
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属性可以获取单元格的值WYSIWYG。剩下的只是字符串操作。
EDIT#1:
发布的代码不能工作的原因是,应用Application.DecimalSeparator类似于应用formats......the基础值没有改变。运行此命令以查看差异:
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 Subhttps://stackoverflow.com/questions/30167265
复制相似问题