▌先上一个例子
知乎上的一个问题:如何把图1变成图2的样子
图1
▼
图2
解决思路只需要三步:
先把txt里面的内容按行读取出来→当每行前两个字符串是”链接“的时候,替换每行的“链接:”、“提取码:”字符串→将符合条件的字符串合并起来,写入新的txt(或覆盖原txt)。
简单来说就是,打开文件,把数据取出来,进行一系列操作,再放回去。
参考代码:
Sub test()Open ThisWorkbook.Path & "\示例文件.txt" For Input As #1Do While Not EOF(1)Line Input #1, strrIf Left(strr, 2) = "链接" Thentxt = txt & vbCrLf & Replace(Replace(strr, "链接:", ""), "提取码:", "----")ElseEnd IfLoopClose #1Open ThisWorkbook.Path & "\输出文件.txt" For Output As #1Print #1, txtClose #1End Sub
代码中,
Open ThisWorkbook.Path & "\示例文件.txt" For Input As #1
和
Open ThisWorkbook.Path & "\输出文件.txt" For Output As #1
都是什么意思呢?这里我们先留个疑问。
下面我们就一说,如何怎么把txt文件内容读取出来,进行一系列操作,再放回去。
▼
▌打开文本文件
对文件读取或者写入之前,都必须使用Open语句打开该文件。Open打开语句有5种方式
Open "c:\示例文件.txt" For Input As #1Open "c:\示例文件.txt" For Output As #1Open "c:\示例文件.txt" For Append As #1Open "c:\示例文件.txt" For Binary As #1Open "c:\示例文件.txt" For Random As #1注释:如果打开不止一个文件,把文件号1改成FreeFile,本篇文章都默认读取1个。
c:\示例文件.txt 是我随意举例子的,编程时候,路径根据实际情况来。
5种方式:
· Input:以读取方式打开。需要读取txt内容的时候用这个打开方式,经常用到。
·Binary:以二进制方式打开。用的不多。
·Output:以写入方式打开。向txt里面写入内容需要用这个方式,经常用到。
特点是,如果C盘下没有1.txt,那么会直接新建一个1.txt。如果已经存在一个1.txt,那么会直接覆盖原文件。
·Append:以追加方式,即添加内容到文件末尾打开。
特点是,如果C盘下没有1.txt,那么会直接新建一个1.txt。如果已经存在一个1.txt,那么会直接将内容写入到文件末尾。
·Random:以随机方式打开,如果未指定方式,则以 Random 方式打开文件。
强调:模式不能混用。不能再读取的打开方式下,进行写入内容操作!也不能用写入的打开方式进行读取txt内容的操作!否则会提示出错。
我们上个例子中的代码中,读取内容时候用的是input方式,向txt写入数据用的打开方式是output。
▌读取文本文件内容
使用Input或Line Input语句读取文本文件内容。
·input
一般用作读取整个txt文件内容,常用语句:
s = StrConv(InputB(LOF(1), 1), vbUnicode) '将整个txt的内容全部读取并赋值给变量s
代码中lof(1)是指文件号为1的文件长度(返回文件的总字节数,所以用InputB),这里使用inputB是搭配StrConv使用的。
为什么不用Input #1, s,是因为这种方法只对纯英文字符或数字有效,带汉字的无法读取。
·Line input
Line input一般搭配EOF函数使用,EOF函数用于判断是否到达文件结尾。
Do While Not EOF(1)
Line Input #1, s '将txt某一行赋值给变量s
Loop
▌写入文本文件
使用Write或Print语句(常用)向文本文件中写入数据。
write语句和Print语句的区别见下面。
联系客服