2017-01-26 10 views
0

Mr Excelとこのサイトの他の場所で最初に調査したこの問題の解決策を探しました(特に22051960は新規ユーザー私のような)。 私がダウンロードしようとしているサイトは https://downloads.theice.com/ です。メインサイトは承認資格情報を要求するhtmlページです。パスワードで保護されたhttpsウェブサイトからファイルをダウンロードするには、VBA WinHTTPを使用してください - 保存されたファイルが壊れています

私は正常にメインサイトを開き、ファイルを認証して保存するように見える上記の参照されたスレッドのコードを試しました。しかし、ファイルに移動すると、サイト上のファイルではなく、代わりに1kbでExcel形式ではありません。ここでは、そのスレッドからのコードは次のとおりです。

Sub SaveFileFromURL() 

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

mainUrl = "https://downloads.theice.com/" 
fileUrl = "https://downloads.theice.com/Settlement_Reports/Oil/icecleared_oil_2017_01_24.xlsx" 
filePath = "C:\mydownloads\myfile2.xls" 

myuser = "username" 
mypass = "password" 

'@David Zemens, I got this by examining webpage code using Chrome, thanks! 
strAuthenticate = "start-url=%2F&user=" & myuser & "&password=" & mypass & "&switch=Log+In" 

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

'I figured out that you have to POST authentication string to the main website address not to the direct file address 
WHTTP.Open "POST", mainUrl, False 'WHTTP.Open "POST", fileUrl, False 
WHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
WHTTP.Send strAuthenticate 

'Then you have to GET direct file url 
WHTTP.Open "GET", fileUrl, False 
WHTTP.Send 

FileData = WHTTP.ResponseBody 
Set WHTTP = Nothing 

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

MsgBox "File has been saved!", vbInformation, "Success" 

End Sub 

私はExcelで、合理的なVBAのスキルを持っていますが、HTMLやWebページの機能の経験がないので、この問題を解決する方法へと失われています。 私の究極の目的は、すでに保護されていないURLで動作するExcelスプレッドシートのURLのリストからファイルを自動的に保存する、私が書いたルーチン内で認証コードを利用することです。

私はこれが私の意見では、このフォーラムの許容質問 感謝

答えて

0

であると思います、あなたはあなたのWinHttpRequestインスタンスにリクエストを送信する前に資格情報(SetCredentials方法)を設定する必要があります。この

WHTTP.SetCredentials(myuser , mypass , HTTPREQUEST_SETCREDENTIALS_FOR_SERVER); 

よう

何かが、あなたはまた、以下のリンクで見てもらえますか?

https://msdn.microsoft.com/en-us/library/aa384058(VS.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/aa383144(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/aa384076(v=vs.85).aspx

私はこれがあなた

役立つことを願っています
関連する問題