2017-06-20 134 views
0

有人知道我怎麼能用Excel VBA獲取這個文件?VBA從ddos下載文件受保護的網站

https://www.centralbankmalta.org/site/excel/statistics/financial_market_int_rates.xls

我用這個代碼,但現在它doesn't工作了:

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 

URLDownloadToFile 0, "https://www.centralbankmalta.org/site/excel/statistics/financial_market_int_rates.xls", "X:\TESORERIA\07 Prestamos\Préstamos 2016\financial_market_int_rates.xls", 0, 0 

我也曾嘗試用:

Sub download2() 

Dim FileNum As Long 
Dim FileData() As Byte 
Dim WHTTP As Object 

mainUrl = "https://www.centralbankmalta.org/" 
fileUrl="https://www.centralbankmalta.org/site/excel/statistics/financial_market_int_rates.xls" 
filePath = "X:\TESORERIA\07 Prestamos\Préstamos 2016\financial_market_int_rates.xls" 

Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1") 

WHTTP.Open "POST", mainUrl, False 
WHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" 

WHTTP.Open "GET", fileUrl, False 
WHTTP.Send 

FileData = WHTTP.ResponseBody 
Set WHTTP = Nothing 

FileNum = FreeFile 
Open filePath For Binary Access Write As #FileNum 
Put #FileNum, 1, FileData 
Close #FileNum 

End Sub 

此代碼下載該信息,而不是數字 enter image description here

所以我認爲問題是ddos保護...或者可能是我已經更新Office 2010到365?

感謝您的時間

+0

DDOS保護是問題的重要組成部分嗎? –

+0

我不確定,我只是在追求它。我已經詳細提出了問題 – Victor

+0

嘗試使用'MSXML2.XMLHTTP'和'MSXML2.ServerXMLHTTP'而不是'WinHTTP.WinHTTPrequest.5.1'。順便說一句你的代碼[對我很好](https://i.stack.imgur.com/wlkJc.png)。 – omegastripes

回答

1
call shell("https://www.centralbankmalta.org/site/excel/statistics/financial_market_int_rates.xls") 

call shell("iexplore https://www.centralbankmalta.org/site/excel/statistics/financial_market_int_rates.xls") 

將是最基本的方法。如果您需要它,您可以使用網絡瀏覽器控件並提供該URL。這會觸發它的行爲與瀏覽器處理它的行爲相同。

+0

感謝您的回答,但我更喜歡如果可能的話不運行IE的實例 – Victor

+0

看起來服務器上有一個重定向。我不知道如何解決這個問題。 –