我需要读取一个文本文件然后搜索一个字符串并读取它之前的下一行或一行。
示例文本文件:
..........
在线门户的信息
主要联系人
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
我需要能够阅读直到遇到行尾。
答案 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