ExcelVBA之使用顺序文件

使用顺序文件

电脑硬盘上有成百上千的顺序文件。参数文件,错误日志,HTML文件以及所有类型的无格式文本文件都是顺序文件。这些文件以字母顺序在硬盘上储存。新文本行的开始以两个专门的字符表示,一个叫做carriage return (回车),另一个叫line feed(换行)。当你使用顺序文件时,你从文件的开头始,一个字符一个字符的向前移动,一行接一行,直到文件的结尾。顺序文件容易打开和操作,任何文本编辑器都可以。

技巧:什么是顺序文件?

顺序文件就是访问它里面的记录时必须按它占据的顺序进行的文件,这意味着在你想访问第三个记录之前,你必须先访问第一个记录,接着是第二个记录。

读取储存于顺序文件里的数据

我们来用一个已经在你电脑上的顺序文件并且在Excel  VB编辑器窗口直接使用VBA来读取它的内容。要从一个文件读取数据,你就必须先使用Open语句打开该文件。这是它的语法:

Open pathname For mode [Access access][lock] As [#]filenumber [Len=reclength]

Open语句有三个必须的参数,它们是pathname, mode, 和 filenumber。上面的语法里,这三个参数前面都有用粗体显示的关键字。
 

①Pathname是你要打开的文件名称

②Pathname可以包括驱动器和文件夹名称

③Mode是个决定文件如何打开的关键字。顺序文件可以以下列模式之一来打开:Input,Output  或Append。使用Input读文件,Output写文件,将覆盖任何存在的文件,以及Append来写入文件,同时附加上任何已经存在的信息。

④Access是决定决定文件读写的关键字,Access可以是:Shared(共享),Lock Read(锁定读),Lock Write(锁定写)或Lock Read Write(锁定读写)。

⑤Lock决定了哪些文件的操作是允许其它过程进行的。例如,如果某文件是在网络环境下打开的,“锁定”决定了其他人如何访问它。下述锁定关键字是可以用的:Read,Write 或者 ReadWrite。

⑥Filenumber是从1到511的数字,该数字用来指向顺序操作中的文件。通过使用VB内置函数FreeFile,你可以获得一个唯一的文件号码。

⑦Open语句里的最后一个成员reclength明确顺序文件里总字符数,或者是随机文件里记录大小。

为了读取数据,要打开D:\Sample.txt或者其它顺序文件,你应该使用下面的指令:

Open "D:\Sample.txt" For Input As #1

如果文件已经打开输入了,那么从它读取数据。在打开一格顺序文件后,你就可以使用下面的语句读取它的内容:

Line Input #或者 Input # 或者使用Input 函数

逐行读取文件

使用下面的语句来逐行读取任何顺序文件里的内容:

Line Input #filenumber, variableName

#filenumber是用Open语句打开文件时使用的数字,variableName是个String或者Variant变量,用来储存读取的行。

Line Input #语句仅读取一开启顺序文件里的一行并且储存在一变量里。记住,Line Input # 语句一次读取顺序文件里的一个字符,直到它遇到回车字符(Chr(13))或者回车-换行字符(Chr(13)& Chr(10))。这些字符(回车,换行)在读取过程中返回的文本里是会忽略掉的。

Sub ReadMe()
Dim rLine As String
Dim i As Integer ' line number
i = 1
Open "D:\Sample.txt" For Input As #1
' stay inside the loop until the end of file is reached
Do While Not EOF(1)
Line Input #1, rLine
MsgBox "Line " & i & " in Sample.txt reads: " _
& Chr(13) & Chr(13) & rLine
i = i + 1
Loop
MsgBox i & " lines were read."
Close #1
End Sub

为了读取内容,过程ReadMe将文件Autoexec.bat在模式Input里作为文件号码1打开。Do…While循环告诉VB一直执行循环里面的语句,直到到达文件结尾。文件的结尾由函数EOF的结果决定。会分次把文件内容显示,通过F8可以逐行运行。

 

EOF函数当下个要读取的字符已经过了文件结尾时,返回逻辑值True。注意,EOF要求一个参数——你要检查的打开了的文件号码,是前面Open语句使用的同一个数字。使用EOF函数来确保VB不会超出文件结尾处。

 

 

Line Input # 语句将每行内容储存于变量rLine里,然后,信息框显示行号和它的内容。之后如果函数EOF的结果还是为假(还未到达文件结尾处)的话,VBA给行计数器增加1,并且开始读取下一行。当函数EOF结果为真是,VB就会退出循环。在VBA结束前,还会再运行两条语句,显示读取行的总数,以及关闭该打开的文件。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值