VBA 文件读写
1 写文件
写文件的基本流程:1)以写模式打开文件;2)写内容;3)关闭文件。
步骤1)调用Open打开文件,设置文件号fileNumber
Open语法
Open pathname For mode As [ # ] filenumber
以写模式(mode)打开文件pathname,同时设置文件号fileNumber。
文件号fileNumber
一个有效文件号,范围为 1 到 511(含 1 和 511)。
可以直接设置数值,或者使用 FreeFile 函数获取下一个可用文件编号。
示例:
以写模式打开指定文件,并设置文件号为#1。
Open "C:\xiaobuteach\test\readme.txt" For Output As #1
Output表示写模式。
如果打开的文件不存在,则会自动创建。
文件号设置为1,前面需加#。
步骤2)调用Print:通过文件号fileNumber写文件内容;
Print语法
Print #filenumber, outputlist
往文件号对应的文件中写入内容outputlist。
示例:
文件中写入两行文字。
Print #1, "xiaobuteach.com"
Print #1, "小步教程xiaobuteach.com"
步骤3)调用Close:通过文件号fileNumber关闭文件
Close #filenumber
示例:
Close #1
完整代码如下:
Sub sub7_1()
Open "C:\xiaobuteach\test\readme.txt" For Output As #1
Print #1, "xiaobuteach.com"
Print #1, "小步教程xiaobuteach.com"
Close #1
End Sub
说明:
如果文件不存在,则会自动创建文件;
如果文件中已经存在,则会重写内容。
通过FreeFile自动分配文件号
Sub sub7_2()
Dim fileNumber As Integer
fileNumber = FreeFile '通过FreeFile自动分配文件号
Debug.Print "fileNumber:" & fileNumber
Open "C:\xiaobuteach\test\readme10.txt" For Output As #fileNumber
Print #fileNumber, "xiaobuteach.com"
Print #fileNumber, "小步教程xiaobuteach.com"
Close #fileNumber
End Sub
注意事项:
"文件已经打开"的解决方法?
如果运行程序中出现"文件已经打开",但没有发现文本工具打开这个工具,可能是Excel程序中打开。把Excel关闭,重新打开即可。
2 读文件
读文件的基本流程:1)以读模式打开文件;2)读内容;3)关闭文件。
步骤1)调用Open:打开文件,设置文件号fileNumber;
示例:以读模式打开指定文件,并设置文件号为#1。
Open "C:\xiaobuteach\test\readme.txt" For Input As #1
Input表示读模式。
如果打开的文件不存在,则会报错。
步骤2)调用Line Input:每次读取一行
Line Input语法
Line Input #fileNumber, result
从文件号对应的文件中读取1行数据,放到result变量中。
示例
Line Input #1 , result
步骤3)关闭文件。略。
完整代码:
例1:读取两行数据的文本文件。
Sub sub8_2()
Open "C:\xiaobuteach\test\readme.txt" For Input As #1
Dim result
Line Input #1, result
Debug.Print result
Line Input #1, result
Debug.Print result
Close #1
End Sub
Line Input执行两行。
输出内容:
xiaobuteach.com
小步教程xiaobuteach.com
例2:通过循环读取多行数据的文本文件。
如果读取到文件末尾,则EOF(文件号)返回True。
Sub sub8_3()
Open "C:\xiaobuteach\test\readme.txt" For Input As #1
Dim result
Do While Not EOF(1)
Line Input #1, result
Debug.Print result
Loop
Close #1
End Sub
输出结果如下:
xiaobuteach.com 1
xiaobuteach.com 2
xiaobuteach.com 3
xiaobuteach.com 4
xiaobuteach.com 5
xiaobuteach.com 6