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:\dushare\test\readme.txt" For Output As #1
 
Output表示写模式。
如果打开的文件不存在,则会自动创建。
文件号设置为1,前面需加#。
步骤2)调用Print:通过文件号fileNumber写文件内容;
Print语法
Print #filenumber, outputlist
 
往文件号对应的文件中写入内容outputlist。
示例:
文件中写入两行文字。
 Print #1, "dushare.cn"
 Print #1, "关关教程dushare.cn"
 
步骤3)调用Close:通过文件号fileNumber关闭文件
Close #filenumber
 
示例:
Close #1
 
完整代码如下:
Sub sub7_1()
  Open "C:\dushare\test\readme.txt" For Output As #1
  Print #1, "dushare.cn"
  Print #1, "关关教程dushare.cn"
  Close #1
End Sub
 
说明:
如果文件不存在,则会自动创建文件;
如果文件中已经存在,则会重写内容。
通过FreeFile自动分配文件号
Sub sub7_2()
  Dim fileNumber As Integer
  fileNumber = FreeFile '通过FreeFile自动分配文件号
  Debug.Print "fileNumber:" & fileNumber
  Open "C:\dushare\test\readme10.txt" For Output As #fileNumber
  Print #fileNumber, "dushare.cn"
  Print #fileNumber, "关关教程dushare.cn"
  Close #fileNumber
End Sub
 
注意事项:
"文件已经打开"的解决方法?
如果运行程序中出现"文件已经打开",但没有发现文本工具打开这个工具,可能是Excel程序中打开。把Excel关闭,重新打开即可。
2 读文件
读文件的基本流程:1)以读模式打开文件;2)读内容;3)关闭文件。
步骤1)调用Open:打开文件,设置文件号fileNumber;
示例:以读模式打开指定文件,并设置文件号为#1。
Open "C:\dushare\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:\dushare\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执行两行。
输出内容:
dushare.cn
关关教程dushare.cn
 
例2:通过循环读取多行数据的文本文件。
如果读取到文件末尾,则EOF(文件号)返回True。
Sub sub8_3()
  Open "C:\dushare\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
 
输出结果如下:
dushare.cn 1
dushare.cn 2
dushare.cn 3
dushare.cn 4
dushare.cn 5
dushare.cn 6