【チュートリアル】VBAでIE自動化ツールを作る(その6) ファイルのダウンロード

こんにちは、自動化エンジニアをしています。kozuです。

エクセルVBAによりWebページの要素(テキストボックス、ボタンなど)を操作したり、表示されている情報を取得する自動化ツールの開発方法を紹介します。実際のWebサイトを自動操作し情報を取得するマクロの開発を通して、自動化ツールの開発について学ぶことができます。

本連載では、チュートリアルということでVBAの開発手順から始め、IEの操作についてどのようなページでも共通で使用できるコード(共通部品)を作成します。最初に共通部品を作成しておくことで、自分でIEの自動化ツールを作成する際に少量の実装で効率よく開発できるようになります。

この章では、Web上のファイルをローカルにダウンロードする処理を実装します。

1.対象者

ブラウザで定期的に手作業で行っているデータ入力やデータ収集等の作業から開放されたい、楽したいと考えている方を対象に、エクセルVBAで自動化するツールの開発ができるようになることを目指しています。プログラミングの経験がない方でも、コードをコピーすれば開発できるようになっています。

2.開発環境

以下の環境を使用します。
バージョンは異なっていても問題ないと思います。
・OS:Windows10
・エクセル:Microsoft Excel2007
・ブラウザ:InternetExploer11

3.ファイルのダウンロード

Windows APIを利用してファイルのダウンロードを行います。「IEControl」に以下を追加してください。「Private Declare Fucntion ~」は先頭(Option Explicitの下)に追加してください。

'★先頭に追加する
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


' ************************************************
'  関数名:DownloadFile
'  概要:ファイル保存
'  引数:src(ファイルのURL)
'       savePath (保存先パス)
'  戻り値:なし
' ************************************************
Public Sub DownloadFile(ByVal src As String, ByVal savePath As String)
   Call URLDownloadToFile(0, src, savePath, 0, 0)
End Sub

以下のように利用します。「Sheet1」に以下のプロシージャを追加してください。保存先ファイルパスの「ユーザー名」は環境に合わせて修正してください。idを指定して取得した要素のsrcプロパティでファイルのURLを取得します。「DownloadFile」にダウンロードするファイルのURLと保存先のパスを指定します。

Sub ファイルダウンロード()
   Dim objIE As New InternetExplorer
   
   Dim url As String
   url = "https://www.google.com/"

   'IEでURLのページを表示
   Call IEControl.OpenUrl(objIE, url)
   
   '画像のId
   Dim imgId As String
   imgId = "hplogo"
   
   '画像のURL(srcプロパティの値)
   Dim imgSrc As String
   imgSrc = IEControl.GetHtmlObjById(objIE, imgId).src
   
   '保存先ファイルパス
   Dim savePath As String
   savePath = "C:\Users\ユーザー名\Desktop\image.png"
   
   'ファイルをダウンロード
   Call IEControl.DownloadFile(imgSrc, savePath)
   
   MsgBox ("正常終了")
End Sub

画像2


ここまでで、ファイルのダウンロードの実装ができました。今までの内容を組み合わせることである程度の自動操作は行えるようになると思います。次回は、自動操作するに当たり、Webサイトごとの規約について説明します。

この記事が気に入ったらサポートをしてみませんか?