应用VBA来处理日常数据时,数据格式经常不是用一个格式,而VBA在excel中具有非常强大的能力,因此将数据读取到excel进行处理是比较方便和高效的。
在VBA应用实战案例(3)中已经有excel数据写入到文本文档中的例子,那这个例子就是逆过程,需要将文本文档中的部分数据读取到excel中,并进行处理。
Sub Data()
BookName = ThisWorkbook.Name
Set shRaw = Workbooks(BookName).Sheets("Raw")
Dim fso As Object, sFile As Object, blnExist As Boolean '定义变量类型
Dim FileName As String, LineText As Variant, i As Integer '定义变量类型
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject") '创建FileSystemObject对象
ChDrive "D"
ChDir "D:\Data source\May\DAILY"
Openfilename = Application.GetOpenFilename("raw files (*.dat), *.dat") '打开.dat格式文件
blnExist = fso.FileExists(Openfilename) '判断文件是否存在,如果不存在,则退出过程
If Not blnExist Then MsgBox "文件不存在!": Exit Sub
Set sFile = fso.OpenTextFile(Openfilename, ForReading) '创建并打开名为sFile的TextStream对象
Do While Not sFile.AtEndOfStream '如果不是文本文件的尾端,则读取数据
LineText = sFile.ReadLine '逐行读取文本文件
If LineText <> "" Then
Data_Text = Split(LineText, " ") '若字符串不为空,则拆分字符串
Else
End If
Data_Text = Data_Text(Ubound(Data_Text)) '获取拆分后的最后一个字符串
If Data_Text = "Calibration" Then '对最后一个字符串进行批判断
Mon_k = Mon_k + 1
Else
End If
Loop
shRAW.range("A1")=mon_k
sFile.Close 0 '关闭文本文件,不保存变更
Set fso = Nothing '清空对象变量
Set sFile = Nothing '清空对象变量
End Sub
上述代码是展示的主要是将文本文档需要的部分读入excel中的操作,实际应用中读取的内容需要根据实际来设定,将文本内容批量读入excel后,二次处理就变得容易,无论是用公式或者vba代码都可以,那么到这一步就变成了对excel单元格的操作了。
代码的核心部分就是如何读取文本文档中符合条件的字符串,通常的策略是通过split拆分字符串,并将符合条件的片段循环写入(或者用数组写入)指定的单元格,得到原始数据后,进一步操作单元格进行处理,进而得到目标结果。