VBA入门到进阶常用知识代码总结52

第52集 Txt文件的读取
246、 读取txt文件内容方法
Input:从文件中读取指定数量的字符
Input #:把数据读出放在变量里,变量用逗号分隔
Line Input #:取出完整的一行
247、 Input函数读取
Input 函数只用于以 Input 或 Binary 方式打开的文件
Input 函数返回它所读出的所有字符,包括逗号、回车符、空白列、换行符、引号和前导空格等
Sub d1()
On Error Resume Next
Dim f, mychar
f = ThisWorkbook.path & “/a.txt”
Open f For Input As #1
Do While Not EOF(1) ’ EOF:循环至文件尾,1:1号文件
mychar = Input(1, #1) ’ 1:读出1个字符,#1:1号文件。
Debug.Print mychar & “:” & Asc(mychar) ’ 显示到立即窗口并转化为ASCII码。
Loop
Close #1
End Sub

把文本文件的内容一次性取出来
Sub d2()
Dim f, mychar, n, L
f = ThisWorkbook.path & “/a.txt”
n = FreeFile '自动取得编号
Open f For Input As n
L = LOF(n) '取得文件的长度
mychar = Input(L - 6, n) '要减去中文字符的个数
Debug.Print mychar ’ 显示到立即窗口。
Close #1
End Sub
248、 Input #读取
Input 文件号,变量1,变量2,…变量N
Input #常用来读取write写的内容(分隔符为逗号,加双引号)
Sub d3()
Dim f, x
f = ThisWorkbook.path & “\ruku.txt”
Open f For Input As #1
Do While Not EOF(1)
Input #1, x
Debug.Print x
Loop
Close #1
End Sub

① 用Write写入:
VBA入门到进阶常用知识代码总结52
Sub 用write写入()
On Error Resume Next
Dim f, arr, x, y, k
f = ThisWorkbook.path & “\ruku3.txt”
arr = Sheets(“sheet2”).Range(“a1:e16”)
Open f For Output As #1
For x = 1 To UBound(arr)
For y = 1 To UBound(arr, 2)
If y = UBound(arr, 2) Then
Write #1, arr(x, y)
Else
Write #1, arr(x, y);
End If
Next y
k = 0
Next x
Close #1
End Sub
运行结果:
VBA入门到进阶常用知识代码总结52

② 用Input #读取,不带#和“”
Sub 读取write写入的文本()
Dim f, y1, y2, y3, y4, y5
f = ThisWorkbook.path & “\ruku2.txt”
Open f For Input As #1
Do While Not EOF(1)
Input #1, y1, y2, y3, y4, y5
Debug.Print y1 & " " & y2 & " " & y3 & " " & y4 & " " & y5
Loop
Close #1
End Sub
结果:VBA入门到进阶常用知识代码总结52

249、 Line Input #读取
Line Input #:取出完整的一行
Sub 读取write写入的文本()
Dim f, sr
f = ThisWorkbook.path & “\ruku3.txt”
Open f For Input As #1
Do While Not EOF(1)
Line Input #1, sr
Debug.Print sr
Loop
Close #1
End Sub
结果:VBA入门到进阶常用知识代码总结52

250、 综合应用-分类输出
Sub 拆分()
Dim f, y1, y2, y3, y4, y5
Dim arr(1 To 5) '存放标题行
Dim k '判断第一行
f = ThisWorkbook.path & “\ruku3.txt”
Open f For Input As #1
Do While Not EOF(1)
Input #1, y1, y2, y3, y4, y5
k = k + 1
If k = 1 Then
arr(1) = y1: arr(2) = y2: arr(3) = y3: arr(4) = y4: arr(5) = y5
Else
Open ThisWorkbook.path & “\拆分示例” & y2 & “.txt” For Append As #2 '追加记录方式打开
If LOF(2) = 0 Then
Write #2, arr(1), arr(2), arr(3), arr(4), arr(5)
Write #2, y1, y2, y3, y4, y5
Else
Write #2, y1, y2, y3, y4, y5
End If
Close #2
End If
Loop
Close #1
End Sub
结果:VBA入门到进阶常用知识代码总结52