Я бы использовал Open fn For Input As #1
и перебрал бы строки с Line Input #1, textline
, затем проверил бы, присутствует ли строка, и сосчитал следующие строки.Сохраните все, что нужно.Не забудьте закрыть файл с помощью Close #1
Sub test()
Dim fn As String, txt As String, mySearch As String, x, y
fn = "D:\workdir\Autotest--new.xml"
Open fn For Input As #1
Do Until EOF(1)
Line Input #1, textline
If InStr(1, textline, "output name=""BoundingBox"">", 1) > 0 Then
For i = 1 To 12
Line Input #1, textline
Select Case i
Case 5
Cells(1, 1) = extract_value(textline)
Case 8
Cells(1, 2) = extract_value(textline)
Case 11
Cells(1, 3) = extract_value(textline)
Case Else
'Ignore
End Select
Next
End If
Loop
Close #1
End Sub
, где следующая функция извлекает двойное значение из текстовой строки.
Function extract_value(ByVal textline As String) As Double
startIndex = InStr(1, textline, "value = """) + 9
endIndex = InStr(startIndex, textline, """")
strVal = Mid(textline, startIndex, endIndex - startIndex)
'strVal = Replace(strVal, ".", ",") 'use this if you have "," as your decimal separator
extract_value = CDbl(strVal)
End Function
Этот код не проверен, потому что я неу вас нет полного файла ваших экземпляров.
Далее, я бы порекомендовал взглянуть на анализатор XML, если вы имеете дело с файлами XML: http://dailydoseofexcel.com/archives/2009/06/16/reading-xml-files-in-vba/