В зависимости от того, насколько хорошо сформирован файл html, это может работать. См. Учебник XPath для дополнительных параметров поиска. Разбор 10000 тегов занял у меня 1 секунду.
Option Explicit
Sub extract()
Const HTML_FILE = "C:\temp\test10000.html"
Dim obj, ws As Worksheet, iRow As Long, tags As Variant, t0 As Single
tags = Array("id", "data_id", "data_value")
' set up results sheet
t0 = Timer
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Cells.Clear
ws.Range("A1:C1") = Array("id", "data_id", "data_value")
iRow = 1
' create xml parser
Set obj = CreateObject("MSXML2.DOMDocument.6.0")
With obj
.setProperty "SelectionLanguage", "XPath"
.validateOnParse = True
.Load HTML_FILE
End With
' tags to search for
Dim xpath As String
xpath = "//div[@class ='Sel_Disp']"
' search
Dim nodes As Object, node As Object, i As Long
Set nodes = obj.SelectNodes(xpath)
' output to sheet1
For Each node In nodes
iRow = iRow + 1
'Debug.Print iRow, node.XML
For i = 0 To UBound(tags)
ws.Cells(iRow, i + 1) = node.getAttribute(tags(i))
Next
Next
' end
MsgBox iRow - 1 & " rows written", vbInformation, "Completed in " & Int(Timer - t0) & " secs"
End Sub