读取文本文件的信息到工作表
这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是“VBA之EXCEL应用”的第十四章“应用程序对象(Application Object)”的第6节:读取文本文件的信息到工作表
第六节 读取文本文件的信息到工作表
大家好,我们讲解的内容是如何读取文本文件,并把读取到的内容写到工作表中。对于读取文本是文件操作的一块重要内容,我们要好好掌握。这讲中我们会讲解Open语句打开一个只读文件,以及获取文件的方法。
1 Open 语句
语法:Open pathname For mode [Access access] [ lock ] As [ # ] filenumber [ Len = reclength ]
参数讲解:
1)pathname 必填。 指定文件名的字符串表达式,可包括目录或文件夹和驱动器
2)mode 必填。 指定文件模式的关键字:Append、Binary、Input、Output 或 Random。 如果未指定,则以 Random 访问模式打开文件。
3)access 可选。 指定可对打开的文件执行的操作的关键字:Read、Write 或 Read Write。
4)lock 可选。 指定由其他进程限制在打开的文件上的操作的关键字:共享、锁定读取、锁定写入和锁定读写。
5)filenumber 必填。 一个有效文件号,范围为 1 到 511(含1和511)。使用FreeFile 函数可获取下一个可用的文件编号。
6)reclength 可选。小于或等于 32,767(字节)的数。对于以随机访问模式打开的文件,此值为记录长度。对于序列文件,此值为缓冲的字符数。
如果 pathname 指定的文件不存在,那么在以 Append、Binary、Output 或 Random 模式打开文件时,即会创建它。
如果文件已由另一个进程打开,并且不允许指定的访问类型,则打开操作将失败,并将发生错误。
如果 mode 为 Binary,则忽略 Len 子句。
在二进制、输入和随机模式中,您可以使用不同的文件号打开文件,而无需先关闭文件。 在 Append 和 Output 模式中,必须先关闭该文件,然后才能用不同文件号打开它。
2 应用OPEN语句打开文件的应用实例
我们看下面的一个实例,这个实例中将首先打开一个名称为test.txt的文件,然后将其中的书名提取出来放到工作表的首列中。
Sub mynzJ()
Dim myFile As String, text As String, textline As String
Sheets("Sheet6").Select
Cells.Clear
myFile = ThisWorkbook.Path & "\test.txt"
" myFile = Application.GetOpenFilename()
Open myFile For Input As #1
Do Until EOF(1)
Line Input #1, textline
text = text & textline
Loop
Close #1
K = 1
For i = 1 To Len(text)
posF = Mid(text, i, 1)
If posF = "《" Then UF = i
If posF = "》" Then UL = i
If UF <> 0 And UL <> 0 Then
Cells(K, 1).Value = Mid(text, UF, UL - UF + 1)
UF = 0: UL = 0: K = K + 1
End If
Next
End Sub
代码截图:
代码讲解:
1) myFile = ThisWorkbook.Path & "\test.txt" 将文件的地址和名称存放到变量中。
2) Open myFile For Input As #1 打开这个文件
3) Do Until EOF(1)
Line Input #1, textline
text = text & textline
Loop
以上代码提取文件的所有内容到text的字符串中。注意是按行提取的。
4) Close #1 关闭文件
5)For i = 1 To Len(text)
posF = Mid(text, i, 1)
If posF = "《" Then UF = i
If posF = "》" Then UL = i
If UF <> 0 And UL <> 0 Then
Cells(K, 1).Value = Mid(text, UF, UL - UF + 1)
UF = 0: UL = 0: K = K + 1
End If
Next
以上代码在提取的字符串中建立一个循环,循环的时候查找到书名号,并提取到书名号之间的字符。
3 应用OPEN语句打开文件并提取内容的测试结果
我们先看看需要打开的文本文件:
我们要在其中只提取到书名即可。点击运行按钮,按测试的结果:
以上的测试表明实现了提取书名的要求。
上述代码中,我们是直接利用了一个变量存储了文件的地址和文件名,如果不能事先知道这个文件的名称和地址,也可以使用Application.GetOpenFilename()来完成操作,当使用这个语句的时候,会弹出一个对话框要求用户选择文件。
今日内容回向:
1) open语句的作用是什么?
2) 打开一个文件后如何提取文件的信息?
3) 获取文件名称的途径有哪些?
本讲内容参考程序文件:工作簿14.xlsm
分享成果,随喜正能量