あるネットワーク上のファイル(今回はZIP)を一括ダウンロードする
前提:
- 対象のファイルは同一URL配下に保管されている
- 対象のファイルは複数ある
- ダウンロード先(格納先)は固定で決まっている
- 結果レポートも出力する
手順:
- ソースに下記の修正を加える
- コピー元のURLを指定(末尾は/で終わること)
- コピー先のフォルダを指定(末尾は\で終わること)
下記説明:
- 対象のファイル名リストを”_copy_list.txt”に格納し、そのファイルを”c:\temp\download\”に格納
- 実行結果は、同フォルダ内に”_report.txt”として作成される(各行の1文字目が0なら成功)
- 上記ファイル群が格納されているURLを準備”http://~~~~~~/~~~~~/”
- あとは実行するだけ
'URLDownloadToFile API.
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
Sub batch()
Dim strFNAME As String, strSRC_FILE As String
Dim strRET As Variant
strFNAME = "c:\temp\download\"
Open strFNAME & "_copy_list.txt" For Input As #1
Open strFNAME & "_report.txt" For Output As #2
Do While Not EOF(1)
Line Input #1, strSRC_FILE
strRET = download(strSRC_FILE, strFNAME & strSRC_FILE)
Print #2, strRET & vbTab; strSRC_FILE
Debug.Print strSRC_FILE
DoEvents
Loop
Close
MsgBox "done!"
End Sub
'strURL:ダウンロード元URL(ファイル名のみ)
'strFNAME:格納先フルパス+ファイル名
Function download(strURL As String, strFNAME As String) As Variant
Dim base_url As String
base_url = "http://~~~~~~/~~~~~/" & strURL
download = URLDownloadToFile(0, base_url, strFNAME, 0, 0)
End Function