あるネットワーク上のファイル(今回は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