Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-Excel数据转换为.txt格式的问题_Excel_Vba - Fatal编程技术网

VBA-Excel数据转换为.txt格式的问题

VBA-Excel数据转换为.txt格式的问题,excel,vba,Excel,Vba,我正在解析Excel数据表的一部分,将其中的3列数字数据复制到一个.txt文件中。除了文本文件中的列之外,所有行都以逗号结尾。如果不使用“替换”脚本,我是否可以第一次正确地编写它们单元格值为双精度 Open myFile For Output As #1 For i = 1 To 25 For j = 1 To 3 cellValue = Cells(i, j).Value If j = 3 Then Write #1, cellV

我正在解析Excel数据表的一部分,将其中的3列数字数据复制到一个.txt文件中。除了文本文件中的列之外,所有行都以逗号结尾。如果不使用“替换”脚本,我是否可以第一次正确地编写它们<代码>单元格值为双精度

Open myFile For Output As #1
For i = 1 To 25
    For j = 1 To 3
        cellValue = Cells(i, j).Value
        If j = 3 Then
            Write #1, cellValue
        Else
            Write #1, cellValue,
        End If
    Next j
Next i
Close #1

在写入前,您可以将每行中的三项连接起来:

Dim V(1 to 3) As Variant

Open myFile For Output As #1
For i = 1 To 25
    For j = 1 To 3
        V(j) = Cells(i, j).Value
    Next j
    Write #1, Join(V)
Next i
Variant
类型应该能够处理所需的类型转换(假设它们是单元格中的数值),尽管如果需要强制转换为double,可以使用
V(j)=CDbl(单元格(i,j).Value)
,尽管
Join()
只会将它们转换为字符串

上面的代码在数字之间插入空格。如果需要其他分隔符(例如分号),可以使用类似于
Join(V,“;”)


顺便说一下,这是VBA而不是VBScript。虽然它们有着密切的联系,但它们不是相同的语言。

正确地书写它们对你来说意味着什么?你已经告诉了我们你现在得到了什么,但是没有告诉我们你想要什么,John,这样可以去掉逗号,但是每一行都用引号括起来。即使使用CDbl命令也会保留引号。这些文件最终被传送到其他需要3列数据的软件中,而这些数据中没有任何其他内容。您可以用
打印
替换
写入
。当我想用VBA编写文件时,我倾向于根本不使用
write
Print
,而是使用VBScript的
TextStream
对象,可以从
VBA
调用这些对象。有关详细信息,请参阅。因此,这很有效。但它确实在最后一行后面放了一个回车,我不想这样。解决方案是移除它(发生在已知行#之后),还是可以在第一个位置防止它?