1、直接采用Open函数+Line input命令
Private Sub txt_read()
Dim txt As String
Open "D:\dzh.txt" For Input As #1 '
'对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,
'并决定缓冲区所使用的访问方式。
'打开文件作为数据输入用,文件号为#1
Do While Not EOF(1)
Line Input #1, txt '从已打开的顺序文件中读出一行并将它分配给 String 变量
'Line Input # 语句一次只从文件中读出一个字符,直到遇到回车符 (Chr(13))
'或回车–换行符 (Chr(13) + Chr(10)) 为止。回车–换行符将被跳过,而不会被附加到字符串上
MsgBox txt
Loop
Close #1
End Sub
2、利用FileSystemObject对象(引用windows script host object model)
Sub TextStreamTest()
'**如果引用“windows script host object model”,可以定义如下的数据类型,编程更方便!!!!*******
Dim fs As FileSystemObject, f As File, ts As TextStream, s As String
'打开一个只读文件,不能对此文件进行写操作/
'打开一个用于写操作的文件。如果和此文件同名的文件已存在,则覆盖以前内容/
'打开一个文件并写到文件的尾部
Const ForReading = 1, ForWriting = 2, ForAppending = 8
'使用系统缺省打开文件/以 Unicode 格式打开文件/以 ASCII 格式打开文件
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
'Dim fs, f, ts, s
Set fs = CreateObject("Scripting.FileSystemObject")
'FileSystemObject 对象提供对计算机文件系统的访问
'下面FileSystemObject.CreateTextFile 返回一个 TextStream 对象,该对象是可读并可写的:
On Error Resume Next '如果文件存在,下个命令会出错!获得文件
fs.CreateTextFile("test1.txt", False).WriteLine ("This is a test.") '创建一个文件,返回一个用于该文件读写的TextStream对象
Set f = fs.GetFile("test1.txt") '返回一个和指定路径中文件相对应的 File 对象
'错误!f.WriteLine ("This is a test.") '向创建的文本文件中写入一行文本,非TextStream对象,错误!!
Set ts = f.OpenAsTextStream(ForAppending, TristateUseDefault) '打开一个指定的文件并返回一个 TextStream 对象
'OpenAsTextStream 方法提供了和 FileSystemObject. 的 OpenTextFile 方法相同的功能/
'此外,OpenAsTextStream 方法还可以用于对一个文件进行写操作。
ts.Write "Hello World"
ts.Close
Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
Do While Not ts.AtEndOfStream
s = ts.ReadLine
MsgBox s
Loop
ts.Close
End Sub
附:自定义类模块——含多个文件处理函数
定义FileOperation类
Private objTS As TextStream ' 定义TextStream对象
Public Function OpenFile(strFileName As String, strMode As String)
Dim objFSO As FileSystemObject ' 定义文件对象
Set objFSO = New FileSystemObject
Set objTS = Nothing
If strMode = "R" Then
' 读取方式打开文件
Set objTS = objFSO.OpenTextFile(strFileName, ForReading, True)
End If
If strMode = "W" Then
' 写入方式打开文件
Set objTS = objFSO.OpenTextFile(strFileName, ForWriting, True)
End If
End Function
Public Function CloseFile()
' 关闭文件
objTS.Close
End Function
Public Function GetLine() As String
' 按行读取文件数据
GetLine = objTS.ReadLine
End Function
Public Property Get AtEndOfFile() As Boolean
' 判断是否已到文件末尾
AtEndOfFile = objTS.AtEndOfStream()
End Property
Public Function WriteLine(strData As String)
' 向文件写入一条数据
objTS.WriteLine (strData)
End Function
Public Function SkipLines(intLines As Integer)
Dim i As Integer
' 跳到指定数据行,如指定行超过总行数,则指定到末尾行
' 一般结合文件末尾判断函数以及读取函数使用
For i = 1 To intLines
If objTS.AtEndOfStream Then
Exit For
End If
objTS.SkipLine
Next i
End Function
测试
Sub Run()
Dim objTXTFO As FileOperation
Set objTXTFO = New FileOperation
objTXTFO.OpenFile "D:\dzh.txt", "R"
Do While Not (objTXTFO.AtEndOfFile)
MsgBox objTXTFO.GetLine
Loop
objTXTFO.CloseFile
End Sub