ExcelのVBAを使用してWebサイトからCSVファイルをダウンロードする必要があります。サーバーは、調査サービスからのデータであるため、私も認証する必要がありました。
このためにVBAで制御されたInternet Explorerを使用した多くの例を見つけました。ただし、ほとんどが遅いソリューションであり、ほとんどは複雑でした。
Update:しばらくして、Microsoft.XMLHTTPオブジェクトを使用して気の利いたソリューションを見つけましたエクセル。将来の参考のために、以下のソリューションを共有することを考えました。
このソリューションは、このWebサイトに基づいています: http://social.msdn.Microsoft.com/Forums/en-US/bd0ee306-7bb5-4ce4-8341-edd9475f84ad/Excel-2007-use-vba-to- download-save-csv-from-url
既存のファイルを上書きし、ログイン資格情報を渡すようにわずかに変更されています。
Sub DownloadFile()
Dim myURL As String
myURL = "https://YourWebSite.com/?your_query_parameters"
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False, "username", "password"
WinHttpReq.send
If WinHttpReq.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.responseBody
oStream.SaveToFile "C:\file.csv", 2 ' 1 = no overwrite, 2 = overwrite
oStream.Close
End If
End Sub
Declare PtrSafe 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
Sub Example()
DownloadFile$ = "someFile.ext" 'here the name with extension
URL$ = "http://some.web.address/" & DownloadFile 'Here is the web address
LocalFilename$ = "C:\Some\Path" & DownloadFile !OR! CurrentProject.Path & "\" & DownloadFile 'here the drive and download directory
MsgBox "Download Status : " & URLDownloadToFile(0, URL, LocalFilename, 0, 0) = 0
End Sub
URLにユーザー名とアドレスを指定してFTPからダウンロードするときに、上記を見つけました。ユーザーは情報を提供してから呼び出しを行います。
これは、組織にactive
FTP.exeをブロックするKaspersky AVがありますが、Web接続はないため、役に立ちました。 ftp.exeを使用して社内で開発することはできませんでしたが、これがソリューションでした。これが他の情報探しに役立つことを願っています!