当前位置:编程学习 > VB >>

Excel里面数据按原格式(行,列,空格分开)输出数据到txt文件。

大家好~
我在Excel宏里面,运行下面编码的时候会有run time error "54" bad file mode



Sub Outputfile

Dim num As Double
Dim row As Integer
Dim col As Integer




row = 1

Open "Output.txt" For Input As #2



Print #2, num

Cells(row, 1) = num
Input #2, num
Cells(row, 2) = num
Input #2, num
Cells(row, 3) = num
row = row + 1




Close #2

MsgBox "Finished Writing"


End Sub

下面是我之前写的从txt读取数据到excel表哥,并把行列互换的编码,(col到row,row到col),可以运行并正常工作,大家可以用来参考一下。
下面是excel里面已经转换好的数据,需要用之前那个VBA输出到Output.txt
2.9 1.5 7.6 6.5 2.6
-2.1 1.2 -6.5 9.12 5.4
-10.4 12 13.5 -8.6 0.23



Sub Outputfile()
    Dim arr, ss
    Open "D:\Output.txt" For Append As #2
    arr = Range("A1:E3")
    For i = 1 To 3
        ss = ""
        For j = 1 To 5
            ss = ss & arr(i, j) & " "
        Next j
        Print #2, ss
    Next i
    Close #2
    MsgBox "Finished Writing"
End Sub
Open "Output.txt" For Input As #2
改成 for output 吧!

都提示你“错误的文件模式”了,还不知道如何改呀。
Input模式是用来“读文件”(输入)的,不是用来“写文件”(输出)的。
引用 1 楼 a814153a 的回复:

Sub Outputfile()
    Dim arr, ss
    Open "D:\Output.txt" For Append As #2
    arr = Range("A1:E3")
    For i = 1 To 3
        ss = ""
        For j = 1 To 5
            ss = ss & arr(i, j) & " "
        Next j
        Print #2, ss
    Next i
    Close #2
    MsgBox "Finished Writing"
End Sub
谢啦~这个可用。
可我有两个小问题,i 和j代表的是行列,ss 和 arr代表的是什么呢?
我是VB的初学者,所以有很多不懂的。
引用 3 楼 u012779420 的回复:
Quote: 引用 1 楼 a814153a 的回复:


Sub Outputfile()
    Dim arr, ss
    Open "D:\Output.txt" For Append As #2
    arr = Range("A1:E3")
    For i = 1 To 3
        ss = ""
        For j = 1 To 5
            ss = ss & arr(i, j) & " "
        Next j
        Print #2, ss
    Next i
    Close #2
    MsgBox "Finished Writing"
End Sub
谢啦~这个可用。
可我有两个小问题,i 和j代表的是行列,ss 和 arr代表的是什么呢?
我是VB的初学者,所以有很多不懂的。


arr是二维数组,arr = Range("A1:E3")就是把单元格[A1:E3]赋值给数组arr;
ss,就是一个临时变量。
补充:VB ,  VBA
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,