文章目录
- 一、VBA打开文本文件的4步操作
- 二、文本输入Excel示例
- 三、 Excel输出文本示例
- 3.1 Open For Output
- 3.2 Open For Append
- 3.3 Print 打印文件
- 3.4 工作簿 循环工作表 循环输出文件
- 四 、先输入后输出 Demo实战演练
一、VBA打开文本文件的4步操作
- 打开文本文件
- 找到指定文件并调入内存
打开指定文件 Open
Open "文件详细路径" For Input/Output As #1
打开 指定文件 为了 输入 / 输出 代号 1
- 读取一行内容
- 将每行视作一个字符串
Line Input #1, s
读取一 输入 1号 作为字符串
行文本 文件 保存到s中
vba的顺序读写模式:
- 每执行一次Line input ,
- 就自动向下读取新的一行,
- 不能向回读取已经读取过的内容
Do While 尚未到达文件末尾
Line Input #1,s
Cell(i,1) = s
i = i + 1
Loop
- 是否已到末尾?
- 如果是末尾就不再读取
EOF 是 End of File 的缩写
EOF(n) = True/False 判断代号n是否读到了文件末尾
用逻辑变量做判断 False 可以直接写成Not EOF,True 直接写成Not EOF,具体看后边示例
4.关闭文件文件
- 保存文件,清理内存
Close #1
'不关闭文件,则之前写入的数据可能无法真正保存到该文件中
二、文本输入Excel示例
Sub readText()
Open "D:\demo\客户信息.txt" For Input/Output As #1
i = 1
Do While Not EOF(1) '尚未到达文件末尾
Line Input #1,s
If Left(s,2) ="北京" Then ' 判断以北京开头的每行操作/否则不操作
Cell(i,1) = s
i = i + 1
End If
Loop
Close #1
End Sub
三、 Excel输出文本示例
3.1 Open For Output
打开指定文件并向其中写入数据
如果已经有同名文件,则将其内容全部清空覆盖
如果当前硬盘上没有这个文件,就新建此文件
3.2 Open For Append
打开指定文件并向其中 <<追加>> 数据
如果已经有同名文件,则保留其内容,并<<追加>>写入
如果当前硬盘上没有这个文件,就新建此文件
3.3 Print 打印文件
Sub WriteText()
Dim i As Integer
Open "d:\部门名单-1.txt" For Output As #1
Print #1, Trim(Cells(3, 2)); '末尾有分号代表输出不换行
Print #1, Trim(Cells(3, 3)) '末尾空白代表输出默认换行
Print #1, Trim(Cells(4, 2))
Print #1, Trim(Cells(4, 3))
Close #1 '不关闭文件,则之前写入的数据可能无法真正保存到该文件中
End Sub
3.4 工作簿 循环工作表 循环输出文件
Sub writeTxt()
Dim s As String, i As Long
Dim w As Worksheet
'打开指定文件(若无此文件则创建)。若已经存在该文件,
'则之前内容全部清除。改为 For Append 可保留之前内容。
Open "d:\demo\部门名单汇总.txt" For Output As #1
'扫描每一张工作表
For Each w In Worksheets
'每张工作表从第3行开始扫描每一行
i = 3
Do While Trim(w.Cells(i, 2)) <> ""
'将每一行的B列和C列内容写入文本文件,中间用一个破折号隔开
'三个字符串之间是分号隔开,所以输出在同一行。而最后一个字符
'后面没有任何符号,所以下一次执行Print时将换行输出。
Print #1, w.Cells(i, 2); "--"; w.Cells(i, 3)
i = i + 1
Loop
Next w
'关闭文件,非常重要!否则可能造成数据丢失!
Close #1
End Sub
四 、先输入后输出 Demo实战演练
Sub readAndWrite()
Dim s As String
'1.0读取
'打开文件
Open "d:\残本1.txt" For Input As #1
Open "d:\残本2.txt" For Input As #2
i = 3
'读取文件
' #1和 #2是否末尾
Do While Not EOF(1) Or Not EOF(2)
If (i And 1) = 1 Then Line Input #1, s
If (i And 1) = 0 Then Line Input #2, s
Cells(i, 2) = s
i = i + 1
Loop
'关闭文件
Close #1, #2
'2.0写出
i = 3
Open "d:\残本3.txt" For Output As #3
Do While Cells(i, 2) <> ""
s = Cells(i, 2).Value
Print #3, s
i = i + 1
Loop
Close #3
End Sub