Данные загружаются с помощью javascript и не будут доступны через запрос XMLHTTP, поскольку сценарии не будут запускаться для загрузки содержимого.
Вы можете использовать эту вторую ссылку, например, в IE, и ввестиПодождите, чтобы убедиться, что информация загружена.Я показываю получение таблицы с этим именем класса по индексу 1. Вы можете изменить индекс здесь:
ele.item(1).outerHTML
Итак, для следующей таблицы используйте clipboard.SetText ele.item(2).outerHTML
.
Вы также можете выполнить цикл.Length
из ele
для получения каждой таблицы, но при вставке убедитесь, что вы записываете в другую ячейку:
Dim i As Long
For i = 0 To ele.Length-1
clipboard.SetText ele.item(i).outerHTML
'Etc
Next
VBA:
Option Explicit
Public Sub GetInfo()
Dim IE As New InternetExplorer, clipboard As Object
Dim ele As Object, ws As Worksheet, t As Date, tableCount As Long
Const MAX_WAIT_SEC As Long = 5
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With IE
.Visible = True
.navigate "http://performance.morningstar.com/fund/performance-return.action?t=VFINX®ion=usa&culture=en_US"
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
t = Timer
Do
DoEvents
On Error Resume Next
Set ele = .querySelectorAll(".r_table3.print97")
tableCount = ele.Length
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While tableCount < 3
If Not ele Is Nothing Then
clipboard.SetText ele.item(1).outerHTML
clipboard.PutInClipboard
ws.Cells(1, 1).PasteSpecial
End If
End With
.Quit
End With
End Sub
![image](https://i.stack.imgur.com/K1wNg.png)