ie-excel

エクセル・マクロでie操作

Excel VBAでIEを操作 ファイルをPCにダウンロード

2016/10/17

Excelで目的のページにたどり着く方法。
そして、そこにあるテーブルをエクセルにコピーする方法を例示してきました。

今回は該当ページのイメージデータ(画像)を自動的にダウンロードするやり方をを例示したいと思います。

そこで今回のお題は
・Yahoo!JAPANを表示
・サイトにある全イメージデータをCドライブにコピー
を実践。

上記お題は、以下の操作をすることにより可能となります。
・エクセルを起動
・(バージョンによっては)マクロを有効にする
・マクロの編集画面で、以下のコードをコピー&ペースト
・マクロを実行

コピペするコード

Cドライブの直下にたくさんのイメージファイルがダウンロードされていませんか?

ではソースの解説です。
赤字箇所のみに限定して説明します。

ファイルダウンロード用のAPI「URLDownloadToFile」を使用するための宣言です。
あまり難しいことを考えずに、URLDownloadToFileを使用する場合、「お約束」で記述すると覚えておきましょう。

続いてのコードです。

ダウンロードするファイルのキャッシュを念のために消しておく処理です。
キャッシュをクリアする処理がないと、キャッシュされた古いデータがダウンロードされる場合もあります。
キャッシュクリア用のAPI「DeleteUrlCacheEntry」を使用するための「お約束」と覚えておきましょう

続いてのコードです。

前回までは、
・document.all : 全タグが検索対象
・document.all.getElementsByTagName("タグ名") : 指定されたタグのみ検索対象
を紹介してきましたが、同様の処理で「images」があります。
これは、getElementsByTagName("img")と同等の処理となり、イメージタグのみを抽出する処理です。

続いてのコードです。

ダウンロード対象のURLのキャッシュをクリアしています。

obj.href
イメージタグの画像の(絶対パス付き)ファイル名は自体は「href」に設定されています。

DeleteUrlCacheEntry(URL名)
キャッシュのクリアをするAPIです。
パラメータはURLのみです。
リターンコード「Rtn_del」に値を入れていますが、このリターン値を対象とした処理は特にしていません。

続いてのコードです。

ファイルダウンロード用API「URLDownloadToFile」を呼び出しています。

URLDownloadToFile
ファイルをダウンロードするAPIです。
パラメーターは以下の通り

パラメータ 設定値
pCaller 0
szURL ダウンロードするURL
szFileName ダウンロードする場所
dwReserved 0(固定)
lpfnCB 0
ダイアログの出力有無

Obj.Nameprop
イメージタグ上、ファイル名はNamepropに設定されています。

今回のポイントの整理です。
・イメージのみを検索したい場合「document.image」でも検索可能
・ファイルのダウンロードするにはAPI「」を使用
・ファイルのダウンロード前に、キャッシュのクリアが必要(API使用)
・イメージタグに設定される絶対パス付きファイル名は「href」に収録
・イメージタグに設定されるパスなしファイル名は「Nameprop」に収録
といった5点がポイントです。

-ExcelでIE操作