読者です 読者をやめる 読者になる 読者になる

DuKiccoの雑記

My Life Is Myself

【Web上のファイルや画像をダウンロード、URLDownloadToFile】【VBA】

エクセル VBA

Web上のファイルをダウンロードする際に

・ファイルのURLに法則性があり機械的に決まっている。
・ダウンロードしたファイル名を自分で決めて保存したい。

といったケースに大変便利です。

例えばYahooFinanceのトヨタ自動車証券コード7203)の日足チャートは以下のようにURLが決まっています。
以下の日足チャートをダウンロードしてみます。

"http://chart.yahoo.co.jp/?code=7203.T&tm=1y&type=c&log=off&size=m&over=m65,m130,s&add=vm,ss&comp="


f:id:DuKicco:20160606074254j:plain


ちなみに証券コード(7203)部分を書き換えると他社の日足チャートになります。

'宣言部に以下の記述が必要

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 testURLD()
'指定した証券コードの日足チャートを本ファイルと同じフォルダに証券コード名で保存する。

Dim SaveFN As String, DFURL As String, ReturnValue As Long, SCode As Long

    SCode = 7203 '証券コード。7203→トヨタ自動車
    SaveFN = ThisWorkbook.Path & "\" & SCode & ".jpg" '画像ファイルの保存先とファイル名を設定
    DFURL = "http://chart.yahoo.co.jp/?code=" & SCode & ".T&tm=1y&type=c&log=off&size=m&over=m65,m130,s&add=vm,ss&comp=" 'ダウンロードしたいファイルのURLを設定

    ReturnValue = URLDownloadToFile(0, DFURL, SaveFN, 0, 0) '実行部分
    
        
    If ReturnValue = 0 Then 'ダウンロードに成功すると「ReturnValue =0」となる。ただの確認
        Debug.Print "ダウンロード成功"
        Else
        Debug.Print "ダウンロード失敗"
    End If
    
End Sub