如何编写宏提取TXT测试报告中指定测试项的目标数值?
VBA宏实现读取TXT测试报告并提取指定测试项数值
以下是实现需求的VBA宏代码,可批量读取指定文件夹内的TXT测试报告,提取目标测试项(如Test2)对应的P后数值,并将结果写入当前Excel工作表:
Sub ExtractTestValueFromTXT() Dim folderPath As String Dim txtFile As String Dim targetTest As String Dim fileNum As Integer Dim lineContent As String Dim splitArr As Variant Dim outputRow As Integer ' 设置目标测试项,可根据需要修改 targetTest = "Test2" outputRow = 2 ' 从第2行开始输出结果(第1行写表头) ' 写入表头 Cells(1, 1).Value = "文件名" Cells(1, 2).Value = targetTest & "对应数值" ' 选择目标文件夹 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "选择存放TXT测试报告的文件夹" If .Show = -1 Then folderPath = .SelectedItems(1) & "\" Else MsgBox "未选择文件夹,宏终止执行" Exit Sub End If End With ' 遍历文件夹内的TXT文件 txtFile = Dir(folderPath & "*.txt") Do While txtFile <> "" fileNum = FreeFile() Open folderPath & txtFile For Input As #fileNum ' 逐行读取文件内容 Do Until EOF(fileNum) Line Input #fileNum, lineContent ' 判断当前行是否包含目标测试项 If InStr(1, lineContent, targetTest, vbTextCompare) > 0 Then ' 按分号分割行内容 splitArr = Split(lineContent, ";") ' 提取P后的数值(对应分割数组的第3个元素,索引为2) If UBound(splitArr) >= 2 Then Cells(outputRow, 1).Value = txtFile Cells(outputRow, 2).Value = splitArr(2) outputRow = outputRow + 1 Exit Do ' 找到目标行后跳出当前文件的循环 End If End If Loop Close #fileNum txtFile = Dir() ' 读取下一个TXT文件 Loop MsgBox "数据提取完成,共处理" & outputRow - 2 & "个文件" End Sub
代码说明
- 目标测试项修改:修改
targetTest变量的值,可切换提取其他测试项(如"Test1") - 文件读取逻辑:通过
Dir函数遍历文件夹内所有TXT文件,逐行读取内容,利用InStr定位目标测试项所在行 - 数值提取:用
Split函数按分号分割行内容,直接取分割后数组的第3个元素(对应示例中P后的200) - 结果输出:将文件名和提取的数值写入当前Excel工作表,自动生成表头
使用方法:打开Excel,按Alt+F11进入VBA编辑器,插入模块后粘贴上述代码,运行宏即可。
内容的提问来源于stack exchange,提问作者Boow Netz
相关产品推荐
相关产品推荐

