VBA / MACRO:在匹配的字符串后从文本文件中读取下一行

时间:2018-03-27 02:49:08

标签: vba excel-vba excel

我需要读取一个文本文件然后搜索一个字符串并读取它之前的下一行或一行。

示例文本文件:
..........

在线门户的信息

主要联系人

John Doe

电话号码

0000000000

johndoe@gmail.com

电子邮件

网站订购

..........

我需要搜索“Primary Contact Full”并获取名称值“John Doe”(这是动态的)

同样,我需要搜索“电子邮件”来检索谷“johndoe@gmail.com”

到目前为止我要阅读的示例代码是:

Sub ExtractData()

Dim myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer

myFile = Application.GetOpenFilename()
Open myFile For Input As #iFile

Do Until EOF(1)
    Line Input #1, textline
        text = text & textline
        posLat = InStr(text, "Primary Contact Full")
Loop
Close #1

Range("A1").Value = Mid(text, posLat + 55, 25)

End Sub

我需要能够阅读直到遇到行尾。

1 个答案:

答案 0 :(得分:1)

对于第一种情况,您可以简单地调用线路输入以在满足条件时读取下一行。对于第二种情况,跟踪前一行,如果满足其他条件,则使用该行。下面有一个示例循环(您可能不需要进行错误处理。)

另一种选择是将整个事物作为数组读取,循环遍历数组。

    Dim myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer, prevLine

    Open myFile For Input As #1

    Do Until EOF(1)
        Line Input #1, textline

            posLat = InStr(textline, "Primary Contact Full")

            If (posLat > 0) Then
                'this skips a line
                Line Input #1, textline
                'do something with text line here
            End If

            posLat = InStr(textline, "E-Mail")

            If (posLat > 0) Then
                'do something with prev line here
            End If

            prevLine = textline
    Loop
    Close #1