VBA使用映射表将文本文件数据输出到excel中

时间:2016-02-19 01:21:14

标签: excel vba excel-vba text

我正在尝试创建一个VBA脚本,该脚本将读取我从PDF文件转换的文本文件,并在搜索词之后提取关键信息。所有文本文件都将位于中心位置C:Work \ Text

在每个文本文件中都有我想要提取并放入Excel中的列的信息。搜索词有助于识别信息,但每个文本文件中的搜索词可能不同,因此我需要创建一个搜索词表。一旦它在一个文本文件中找到信息,它就可以移动到下一个文本文件中,它不需要发布出现在文本文件中的每个搜索词实例。

实施例: 我正在寻找账号和金额

文本文件1:通过搜索单词“帐号:”可在文本文件中找到帐号,可通过搜索“金额:”找到金额。

帐号:1234 金额:10美元

文本文件2:通过搜索“帐户”一词可以在文本文件中找到帐号,可以通过搜索“费用”找到金额

帐户00090 费用25

文本文件3:通过搜索单词“初始编号”可在文本文件中找到帐号,可通过搜索“总计”找到金额

初始编号555555555 总计$ 90.02

如此重要我想创建一个引用这些搜索词的映射表,并在搜索词之后引入信息。如果需要添加新的搜索词,我总是可以添加到映射表中。

输出必须将所有帐号编号数据放入A1栏,所有金额数据将进入B1

1 个答案:

答案 0 :(得分:0)

我编写了示例代码来指示。您可能需要迭代同一块休息。您可以添加多个if条件来搜索其他模式(只是建议)

Const ForReading = 1
Dim strSearchFor
dim i=1
Set objExcel = CreateObject("Excel.Application")
‘Set objWorkbook = objExcel.Workbooks.Open("C:\test.xls")
objExcel.Application.Visible = True
objExcel.Workbooks.Add


For Each f In objFSO.GetFolder("C:\some\folder").Files
  Set objFile = f.OpenAsTextStream
  strSearchFor = "Account Number"
  Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    'do stuff with strLine and append to strText
    If InStr(strLine, strSearchFor) <> 0 then
        Wscript.Echo "Account Number found"
        objExcel.Cells(i, 1).Value = strLine
        i=i+1
    Else
        Wscript.Echo "Account Number not found"
    End If
  Loop
  objFile.Close

Next

objExcel.ActiveWorkbook.SaveAs "C:\test.xls"
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit