Проблемы с загрузкой файла с EXCEL vba - PullRequest
0 голосов
/ 15 марта 2019

Я пишу приложение для Android, и мне нужны довольно большие базы данных для него. Я использую Excel и VBA для создания этой базы данных. Я немного погуглил, чтобы загрузить веб-страницу (чтобы извлечь данные из моих баз данных), и я придумал приведенный ниже код. Но это не работает. Всегда возвращает downloadResult = 2148270085. Кто-нибудь с хорошими предложениями для решения? Я использую 64-разрядную систему и использую 64-разрядную версию EXCEL2013.

Option Explicit
Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" ( _
        ByVal pcaller As LongPtr, _
        ByVal szURL As String, _
        ByVal szFileName As String, _
        ByVal dwReserved As LongPtr, _
        ByVal lpfnCB As LongPtr) As LongPtr

Sub DownloadFileButton_Clicked()
    Dim fileURL As String
    Dim fileName As String
    Dim downloadResult As LongPtr
    fileURL = "http://www.wordreference.com/definicion/estar"
    fileName = Application.ThisWorkbook.Path + "\" + "estar.htm"
    downloadResult = URLDownloadToFile(0, fileURL, fileName, 0, 0)
    If downloadResult = 0 then
        Debug.Print "Download started"
    Else
        Debug.Print "Download not started, error code: " & downloadResult
    End If
End Sub

1 Ответ

0 голосов
/ 15 марта 2019

Хорошо, я закончил с httpRequest вместо URLDownloadFile, но не смог заставить его работать.За несколько часов тестирования я наконец обнаружил, что мой брандмауэр блокирует запрос.После попытки добавить исключение в мой брандмауэр, я просто отключил брандмауэр при использовании своего кода.Надеюсь, это кому-нибудь поможет.Я предчувствую, что URLDownloadFile также застрял бы в брандмауэре.

Sub DownloadFileButton_Clicked3(language As String, verb As String) ' Fr Es It
    Const WinHttpRequestOption_EnableRedirects = 6
    Dim httpRequest As Object
    Dim URL As String, myString As String
    Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    URL = "http://www.wordreference.com/conj/" + language + "Verbs.aspx?v=" + verb
    httpRequest.Option(WinHttpRequestOption_EnableRedirects) = True
    httpRequest.Open "GET", URL, False
    'httpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    'httpRequest.SetTimeouts  'connection with the server could not be established
    httpRequest.Send
    httpRequest.WaitForResponse
    Debug.Print Len(httpRequest.ResponseText)
    myString = httpRequest.ResponseText
    Dim fileName As String
    fileName = Application.ThisWorkbook.Path + "\" + verb + ".htm"
    Open fileName For Output As #1
    Print #1, myString
    Close #1
    Set httpRequest = Nothing
End Sub
...