У меня есть следующий код для хранения списка ссылок:
Dim allHREFs As New Collection
Dim TableName As String
For iRow = 0 To 20
TableName = "docTypeForm:documentTbl:" & iRow & ":j_idt250"
On Error GoTo DownloadFiles
Set allLinks = obJIE.Document.getElementById(TableName).getElementsByTagName("a")
For Each link In allLinks
allHREFs.Add link.href
Next link
Next iRow
DownloadFiles:
For j = 1 To allHREFs.Count
obJIE.Navigate Url + allHREFs(j)
'Application.Wait (Now + TimeValue("0:00:04"))
Download_default
Next
Я ищу много сайтов, и они всегда приводят к одному и тому же коду. Я до момента, когда файл должен быть загружен через всплывающее окно, которое вы получаете (в IE). Желательно «сохранить как», чтобы сохранить в нужной папке. Для кода ниже я получаю ошибку на hWnd = find window
. Ошибка, которая у меня есть, это подфункция не определена. Я чувствую, что это как-то связано с LongPtr, но когда я ищу его, похоже, что оно должно работать. Любые предложения об этой ошибке? Или, может быть, другой способ сохранить или загрузить файлы по ссылке href?
Private Sub Download_Default()
Dim AutomationObj As IUIAutomation
Dim WindowElement As IUIAutomationElement
Dim Button As IUIAutomationElement
Dim hWnd As LongPtr
Set AutomationObj = New CUIAutomation
Do While oBrowser.Busy Or oBrowser.readyState <> 4: DoEvents: Loop
Application.Wait (Now + TimeValue("0:00:05"))
hWnd = oBrowser.hWnd
hWnd = FindWindowEx(hWnd, 0, "Frame Notification Bar", vbNullString)
If hWnd = 0 Then Exit Sub
Set WindowElement = AutomationObj.ElementFromHandle(ByVal hWnd)
Dim iCnd As IUIAutomationCondition
Set iCnd = AutomationObj.CreatePropertyCondition(UIA_NamePropertyId, "Save")
Set Button = WindowElement.FindFirst(TreeScope_Subtree, iCnd)
Dim InvokePattern As IUIAutomationInvokePattern
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)
InvokePattern.Invoke
End Sub
Обновление: я пытался скопировать вставить ссылки в Google chrome, потому что он будет загружаться автоматически при нажатии на ссылку, но это тоже не работает. Открывается chrome, но сервер недоступен.