参照 https://tonari-it.com/excel-vba-windowsapi-urldownloadtofile/
マイクロソフト Windows API リストhttps://msdn.microsoft.com/ja-jp/windows/hh240557

①まずは宣言セクションでURLDownloadToFileの宣言
Windows APIを使用するには、まずVBAコードの宣言セクションで、「このWindows APIを使います」という宣言が必要です。URLDownloadToFile関数はurlmonというDLLに含まれていますので、API名にはURLDownloadToFileを、DLL名にはurlmonを指定します。そしてこの関数はLong型の返り値を返してくれますので、Long型で宣言しておきましょう。
Private 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
特に値を指定したりするのはszURLとszFileNameの2つで、それぞれの役割と型がこちら。
- szURL ダウンロードしたいファイルのURLを関数に渡すもの。String型。
- szFileName ダウンロードしたファイルを保存するパスをAPIに渡すもの。String型。
szURLとszFileName以外3つの変数は”0″を渡すだけなので、このままでも問題ありません。
そしてコード部分でURLDownloadToFile関数を呼び出す際の記述がこちら。
変数に返された値が0ならファイルダウンロード完了、それ以外ならダウンロードできていないということになります。
②このWindows APIでファイルをダウンロードしてみる
Option Explicit
Private 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 Download_File()
Dim lngRes As Long
Dim strURL As String
Dim strPath As String
strPath = “C:\Users\users\Desktop\File\画像.png”
strURL = “https://www.google.co.jp/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png”;
lngRes = URLDownloadToFile(0, strURL, strPath, 0, 0)
If lngRes = 0 Then
MsgBox “ダウンロード完了!”
Else
MsgBox “ファイルをダウンロードできませんでした”
End If
End Sub
このコードを実行してみると、引数の”strPath”に指定したパスに、strURLで指定したURLのファイルがダウンロードされます。