Обратите внимание на несколько моментов.
- Да, это id не для этого элемента, но этот элемент является div и копирование вставляется через буфер обмена, внешний html будет вставлять только html div -не все таблицы внутри.
- Вам нужен список таблиц, поэтому вам нужно изменить селектор, чтобы получить таблицы внутри этого div
- Поскольку используется буфер обмена и есть объединенные выходные ячейки, которые вам нужнынайти последнюю использованную строку независимо от столбца и добавить 1, чтобы записать следующую таблицу в несколько строк.
- Если вы не уверены в своем селекторе, используйте панель поиска в браузере, как показано [здесь]. 1
VBA:
Option Explicit
Public Sub Deneme()
Dim s As String, ws As Worksheet, tables As Object, i As Long
Dim html As HTMLDocument, clipboard As Object
Set html = New HTMLDocument
Set ws = ThisWorkbook.Worksheets("Sheet1")
Application.ScreenUpdating = False
With New XMLHTTP60
.Open "GET", "https://www.scorespro.com/basketball/results/date/2019-02-15", False
.setRequestHeader "content-type", "application/x-www-form-urlencoded; charset=UTF-8"
.send
s = .responseText
End With
html.body.innerHTML = s
Set tables = html.querySelectorAll("#matches-data table")
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
For i = 0 To tables.Length - 1
clipboard.SetText tables.item(i).outerHTML
clipboard.PutInClipboard
ws.Range("A" & GetLastRow(ws) + 1).PasteSpecial
Next
Application.ScreenUpdating = True
End Sub
Public Function GetLastRow(ByVal sh As Worksheet) As Long
On Error Resume Next
GetLastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function