Я использую следующий код.
Sub HREF_Web()
Dim doc As HTMLDocument
Dim output As Object
Range("A1:C10000").Clear
' delete all queries
Dim pq As Object
For Each pq In ThisWorkbook.Queries
pq.Delete
Next
' delete all connections
Dim cn As Object
For Each cn In ThisWorkbook.Connections
cn.Delete
Next
Set ie = New InternetExplorer
ie.Visible = True
ie.navigate Worksheets("Sheet1").Range("L1") ' getting url from the worksheet
Do
'DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
Set output = doc.getElementsByTagName("a")
For Each link In output
Debug.Print link.innerHTML
If link.innerHTML Like "*" & "Data Corrections" & "*" Then
link.Click
currenturl = ie.LocationURL
ActiveWorkbook.Queries.Add Name:="Table 0", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Web.Page(Web.Contents(currenturl))," & Chr(13) & "" & Chr(10) & " Data0 = Source{0}[Data]," & Chr(13) & "" & Chr(10) & " #""Promoted Headers"" = Table.PromoteHeaders(Data0, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes(#""Promoted Headers"",{{""Data Notice Page"", type any}, {""eMBS Inc"", type any}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " " & _
" #""Changed Type"""
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 0"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Table 0]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Table_0"
.Refresh BackgroundQuery:=False
End With
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A2").Select
End If
Next
MsgBox "Done!"
End Sub
Ошибка в этой строке:
.Refresh BackgroundQuery:=False
Переменная 'currenturl' исходит из недавно открытого окна IE.Может быть, это не тот способ, но я думал, что это сработает.По сути, я хочу просмотреть все теги HREF в родительском элементе, найти теги, содержащие «исправления данных», щелкнуть эти ссылки, перейти к этим дочерним URL-адресам (их 4) и импортировать данные из объекта «Таблица 0»..
Вот изображение ошибки.