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のリストからファイルを自動的に保存する、私が書いたルーチン内で認証コードを利用することです。
私はこれが私の意見では、このフォーラムの許容質問 感謝