VBA读写文本文件的几种方法
1、直接采用Open函数 Line input命令
Private Sub txt_read() Dim txt As String Open 'D:\' 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('', False).WriteLine ('This is a test.') '创建一个文件,返回一个用于该文件读写的TextStream对象 Set f = fs.GetFile('') '返回一个和指定路径中文件相对应的 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
vba编程技巧测试
Sub Run() Dim objTXTFO As FileOperation Set objTXTFO = New FileOperation objTXTFO.OpenFile 'D:\', 'R' Do While Not (objTXTFO.AtEndOfFile) MsgBox objTXTFO.GetLine Loop objTXTFO.CloseFile End Sub
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论