Я пытаюсь импортировать таблицу из следующей ссылки в мою базу данных:
http://www.abif.cl/tasas.php?tipo=5
Я пытаюсь сделать это, загрузив страницу в виде HTML-файла в каталог через VBA, а затем создав связанную таблицу.
Это прекрасно работает, когда я загружаю его вручную через Chrome, используя опцию «Загрузить полную страницу» в разделе «Сохранить как».
Однако при загрузке веб-страницы с использованием VBA при попытке связать таблицу появляется сообщение об ошибке (-5016).
Пояснение: ошибка не возникает, когда я пытаюсь загрузить страницу в формате HTML; скорее это происходит после того, как я пытаюсь связать таблицу с загруженным HTML (не происходит, если HTML был загружен вручную через браузер)
Вот VBA, которую я использую для загрузки HTML:
Option Compare Database
Option Explicit
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" ( _
ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) _
As Long
Public Function DownloadFile( _
ByVal strURL As String, _
ByVal strLocalFilename As String) _
As Long
Dim lngRetVal As Long
lngRetVal = URLDownloadToFile(0, strURL & vbNullChar, strLocalFilename & vbNullChar, 0, 0)
DownloadFile = lngRetVal
End Function
Пожалуйста, дайте мне знать, если есть какая-либо другая информация, которую я мог бы предоставить!
Возможно, есть способ загрузить «Полная веб-страница» в VBA?
Спасибо!
Я попытался загрузить HTML таким образом, и это сработало. Это ни в коем случае не элегантное решение, и я все еще открыт для любых предложений относительно того, почему я получаю свою ошибку / как ее исправить. Благодарю.
Public Function SaveHTML(strURL As String, strOutFile As String)
Dim IE As Object
Dim i As Long
Dim FF As Integer
Set IE = CreateObject("Internetexplorer.Application")
IE.Visible = False
IE.Navigate strURL
Do
Loop While IE.Busy
'Creates a file as specified
' this will overwrite an existing file if already exists
CreateObject("Scripting.FileSystemObject").CreateTextFile strOutFile
FF = FreeFile
Open strOutFile For Output As #FF
With IE.Document.Body
Print #FF, .OuterHtml & .InnerHtml
End With
Close #FF
IE.Quit
'Set IE = Nothing
End Function
Других решений пока нет …