VBA 读取/写入文本文件


1、Open 语句 

打开方式有 

Input:以读取方式打开。

Output:以写入方式打开。

Append:以追加方式,即添加内容到文件末尾打开。

Binary:以二进制方式打开。

Random:以随机方式打开,如果未指定方式,则以 Random 方式打开文件。

 Open pathname For mode As [#]filenumber

 Open "c:\a.txt" For Output As #1

filenumber  是一个有效的文件号,范围在 1 到 511 之间。

如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。 

2、Close 语句 

语法:Close [filenumberlist]

     filenumberlist 参数为一个或多个文件号,若省略 filenumberlist,则将关闭 Open 语句打开的所有活动文件。 

说明:打开文件后,必须在使用完后关闭文件。

 

3、EOF 函数 

语法:EOF(filenumber) 

功能:返回一个 Integer,它包含 Boolean 值 True,表明已经到达为 Random 或顺序 Input 打开的文件的结尾。

Open "c:\a.txt"  For Input As #1 ‘以读入方式打开c:\a.txt

    Do While Not EOF(1)  '未到达结尾
                  Line Input #1, s1     '读入一行,放入s1变量中        
          Loop
        Close #1 


4、LOC 函数 

语法:LOC(filenumber) 

功能:返回一个 Long,在已打开的文件中指定当前读/写位置。 

Dim MyLocation, MyLine 

Open "TESTFILE" For Binary As #1   ' 打开刚创建的文件。

Do While MyLocation < LOF(1)   ' 循环至文件尾。 

MyLine = MyLine & Input(1, #1)   ' 读入一个字符到变量中。 

MyLocation = Loc(1)   ' 取得当前位置。  ' 在立即窗口中显示。  

Debug.Print MyLine : Tab : MyLocation  Loop  Close #1   ' 关闭文件。
 

5、Input # 语句  

    语法:Input #filenumber, varlist
    功能:从已打开的顺序文件中读出数据并将数据指定给变量。 (有文字中有不在引号中的,会被认为是分隔符)
    说明:通常用 Write # 将 Input # 语句读出的数据写入文件。为了能够用 Input # 语句将文件的数据正确读
          入到变量中,在将数据写入文件时,要使用 Write # 语句而不使用 Print # 语句。使用 Write # 语句
          可以确保将各个单独的数据域正确分隔开。 

6、Line Input # 语句  

    语法:Line Input #filenumber, varname 
    功能:从已打开的顺序文件中读出一行并将它分配给 String 变量。 
    说明:通常用 Print # 与 Line Input # 语句配合使用。Line Input # 语句一次只从文件中读出一个字符,
          直到遇到回车符 (Chr(13)) 或回车–换行符 (Chr(13) + Chr(10)) 为止。回车–换行符将被跳过,
          而不会被附加到字符串上。  
    7、Input 函数 
 
 

语法:Input(number, [#]filenumber),其中number 指定要返回的字符个数。 

功能:返回 String,它包含以 Input 或 Binary 方式打开的文件中的字符。

说明:通常用 Print # 或 Put 将 Input 函数读出的数据写入文件。Input 函数只用于以 Input 或

Binary 方式打开的文件。

与 Input # 语句不同,Input 函数返回它所读出的所有字符,包括逗号、回车符、空白列、

换行符、引号和前导空格等。 

示例:

Dim MyChar,s1

Open "C:\test.txt" For Input As #1

Do While Not EOF(1)       ' 循环至文件尾。

    MyChar = Input(1, #1)      ' 读入一个字符。

s1=Input(EOF(1), #1)  '一次读入全部

    Debug.Print MyChar      ' 显示到立即窗口。

Loop

Close #1 

 

8、Write # 语句  

语法:Write #filenumber, [outputlist] 

功能:将数据写入顺序文件。 

如果省略 outputlist,并在 filenumber 之后加上一个逗号,则会将一个空白行打印到文件中。

多个表达式之间可用空白、分号或逗号隔开。空白和分号等效。 

与 Print # 语句不同,当要将数据写入文件时,Write # 语句会在项目和用来标记字符串的引号之间插入逗号。 

    9、Print # 语句 

语法:Print #filenumber, [outputlist] 

outputlist 参数的设置如下:

[{Spc(n) | Tab[(n)]}] [expression] [charpos] 

Spc(n) 用来在输出数据中插入空白字符,而 n 指的是要插入的空白字符数。

Tab(n) 用来将插入点定位在某一绝对列号上,这里,n 是列号。使用无参数的 Tab 将插入点定位在

下一个打印区的起始位置。

expression 要打印的数值表达式或字符串表达式。

charpos 指定下一个字符的插入点。使用分号将插入点定位在上一个显示字符之后。用 Tab(n) 将

插入点定位在某一绝对的列号上,用无参数的 Tab 将插入点定位在下一个打印区的起始处。如果省略

charpos,则在下一行打印下一个字符。

 

Open "F:\test.txt" For Output As #1         ' 打开输出文件。

Print #1, "This is a test"                  ' 将文本数据写入文件。

Print #1,                                   ' 将空白行写入文件。

Print #1, "Zone 1"; Tab; "Zone 2"           ' 数据写入两个区(print zones)。

Print #1, "Hello"; " "; "World"             ' 以空格隔开两个字符串。

Print #1, Spc(5); "5 leading spaces "       ' 在字符串之前写入五个空格。

Print #1, Tab(10); "Hello"                  ' 将数据写在第十列。

读入文本到数组

 

Sub test()
    Dim a()
    Dim i As Integer
    x = CreateObject("scripting.FileSystemObject").OpenTextFile("c:\test.txt", 8).Line
    ReDim a(x)
    i = 0
    Open "c:\test.txt" For Input As #1
        Do While Not EOF(1)   '  循环至文件尾
           i = i + 1
           Line Input #1, a(i)   ' 读入一行数据并将其赋予某变量
        Loop
    Close #1
End Sub
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在VBA中在文本文件中间插入行,你可以使用FileSystemObject对象来读取写入文件。下面是一个示例代码,演示如何在文本文件的指定行之后插入新行: ```vba Sub InsertLineInFile() Dim filePath As String Dim lineToInsert As String Dim lineToFind As String Dim tempFilePath As String Dim tempFileName As String ' 设置文件路径 filePath = "C:\path\to\your\file.txt" ' 设置要插入的行 lineToInsert = "This is the new line to insert" ' 设置要找到的行 lineToFind = "This is the line after which you want to insert the new line" ' 创建FileSystemObject对象 Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") ' 检查文件是否存在 If Not fso.FileExists(filePath) Then MsgBox "文件不存在!" Exit Sub End If ' 创建一个临时文件以保存修改后的内容 tempFilePath = fso.GetParentFolderName(filePath) tempFileName = fso.GetBaseName(filePath) & "_temp" & fso.GetExtensionName(filePath) ' 打开原始文件和临时文件 Dim originalFile As Object Set originalFile = fso.OpenTextFile(filePath, 1) ' 1 表示只读模式 Dim tempFile As Object Set tempFile = fso.CreateTextFile(tempFilePath & "\" & tempFileName, True) ' True 表示创建新文件 ' 逐行读取原始文件并写入临时文件 Do Until originalFile.AtEndOfStream Dim line As String line = originalFile.ReadLine ' 找到要插入行的位置 If line = lineToFind Then ' 在找到的行之后插入新行 tempFile.WriteLine line tempFile.WriteLine lineToInsert Else ' 其他行直接写入临时文件 tempFile.WriteLine line End If Loop ' 关闭文件 originalFile.Close tempFile.Close ' 删除原始文件并重命名临时文件为原始文件名 fso.DeleteFile filePath fso.MoveFile tempFilePath & "\" & tempFileName, filePath MsgBox "新行已成功插入文件!" End Sub ``` 请确保将上述代码中的`filePath`、`lineToInsert`和`lineToFind`替换为你实际的文件路径、要插入的行和要找到的行。 此代码将在指定行之后插入新行,并将修改后的内容保存回原始文件中。请注意,在处理大型文件时,此方法可能会对性能产生一些影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值