Trong một câu trả lời trước đó ( bảng vba - html vào bảng tính excel ) về phân tích / dán nội dung bảng HTML vào một bảng Excel, wbeard2 đã chia sẻ đoạn mã minh họa rất hữu ích này. Anh ấy / cô ấy lưu ý rằng nó cấy dữ liệu bảng vào Excel nhưng không phải tiêu đề. Tôi đã tự hỏi làm thế nào để sửa đổi mã này để bao gồm các tiêu đề cột trong bảng Excel. Đã nghĩ rằng có thể có một cách lặp qua các phần tử tiêu đề tương tự như được hiển thị để lặp qua tất cả các ô và các ô trong các hàng trong, nhưng không chắc có phần tử lặp tương đương cho các tiêu đề hay không - có thể là ? Bất kỳ lời khuyên / hướng dẫn về điều này đánh giá cao.
Đây là mã mẫu từ câu trả lời trước được tham chiếu ở trên:
Private Sub Test()
Dim ie As Object, i As Long, strText As String
Dim doc As Object, hTable As Object, hBody As Object, hTR As Object, hTD As Object
Dim tb As Object, bb As Object, tr As Object, td As Object
Dim y As Long, z As Long, wb As Excel.Workbook, ws As Excel.Worksheet
Set wb = Excel.ActiveWorkbook
Set ws = wb.ActiveSheet
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
y = 1 'Column A in Excel
z = 1 'Row 1 in Excel
ie.navigate "http://", , , , "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Do While ie.busy: DoEvents: Loop
Do While ie.ReadyState <> 4: DoEvents: Loop
Set doc = ie.document
Set hTable = doc.GetElementsByTagName("table")
For Each tb In hTable
Set hBody = tb.GetElementsByTagName("tbody")
For Each bb In hBody
Set hTR = bb.GetElementsByTagName("tr")
For Each tr In hTR
Set hTD = tr.GetElementsByTagName("td")
y = 1 ' Resets back to column A
For Each td In hTD
ws.Cells(z, y).Value = td.innertext
y = y + 1
Next td
DoEvents
z = z + 1
Next tr
Exit For
Next bb
Exit For
Next tb
End Sub