【ExcelVBA】IE操作とは?IE操作をするメリット・使い方を徹底解説!

皆さんは、ExcelVBAでWEBからデータを取得する方法を知っていますか?ExcelVBAはExcelだけでなくIEを操作することもできるので、覚えておくと効率化できるのでおすすめです!

そこで今回は、

  • IE操作とは
  • VBAでIE操作するメリットとは

といった基礎的なことから、

  • VBAでIE操作するときの基本的な流れ
  • 取得するデータの法則性を見つける方法
  • 【サンプルコード付き】VBAでIE操作する方法

といった応用的な方法まで、徹底的に解説します!

IE操作とは

はじめに、IE操作について簡単に解説します。IEはブラウザの一種で、インターネットエクスプローラーのことです。IE操作は、インターネットエクスプローラーを使ってWEBのデータ取得・登録など、WEB操作をする方法です。

IEから取得したデータを加工してシートに書き込む処理や、シートにあるデータをWEBの外部システムに自動で登録する処理などを作るときなどに使います。

VBAでIE操作するメリットとは

つぎに、VBAでIE操作をするメリットについて簡単に解説します。箇条書きで書くと、メリットは次のとおりです。

  • WEB検索のルーチン作業をなくせる
  • VBAでIE操作できる人が少ないため重宝される
  • WEBの簡単な登録処理を自動化できる
  • 社内のWEBシステムの自動化処理を手軽に作れる

VBAはExcelだけでなくPower Point、Word、Outlook、AccessなどのOffice連携ができることを知っている人はいるかもしれませんが、ExcelでIE操作ができることを知っている人は少ないです。

そのため、VBAでIE操作ができるととても重宝されます。また、WEBシステムの操作も自動化することができるため、無駄な作業を一気になくすことができます。

最近副業が流行っていますが、クラウドソーシングの開発案件ではVBAでIE操作する案件がとても多いので、VBAで副業として稼いでいきたい人にもとてもおすすめです!

VBAでIE操作するときの基礎的な流れとは

ここからはWEBからデータを取得する方法を例に、VBAでIE操作するときの基礎的な流れについて解説します。基本的には、次の流れでIE操作の処理を作ります。

手順1:欲しいデータの規則性を見つける

手順2:VBAでIE操作のコードを書く

手順3:Excelのシートにデータを書き込む処理を書く

手順2以降はVBAでIE操作する処理を書く方法を覚えればいいだけなのですが、手順1の「欲しいデータの規則性を見つける」については、考え方が少し難しいので詳しく解説します!

取得するデータの規則性を見つける方法

それでは、欲しいデータの規則性を見つける方法について解説します。

方法1:WEB画面を直接見て規則性を見つける

最初に、データを取得するサイトのWEB画面を直接見て規則性を考えます。わかりやすくするために、「Googleの検索結果一覧のデータを取得するツール」を例に解説します。

Googleの検索結果一覧の画面:

「VBA 侍エンジニア 入門」でググった時の検索結果一覧です。この画面から、データの規則性を考えます。

※わかりやすくするために枠線をつけました

枠線で囲った部分の「タイトル・URL・説明」でまとまったデータが、それぞれ表示されていますよね。

このように画面を見てまずは、『「タイトル・URL・説明」のかたまりの数分処理をループすれば、検索結果一覧を取得できそう』といったレベルで、ざっくりと規則性を考えます。

方法2:HTMLのコードから規則性を見つける

先ほどの方法で、データを取得するための規則性をざっくりと見つけることができましたよね。次は、WEB画面ができているHTMLのコードレベルで規則性を調べます。

ただ、HTMLを書いたことがない方もいると思うので、HTMLの基礎について簡単に解説します。

HTMLとCSSの基礎

HTMLは全て「タグ」と呼ばれるコードでできています。HTMLのタグでコードを書いて、WEBの画面を作っていくわけですね。

また、HTMLで書いたコードにCSSでデザインを付けることで、WEBの画面ができています。言葉だけではわかりづらいので、「HTMLだけの場合」と「HTML + CSSの場合」のイメージを用意しました。

HTMLだけで書いた画面サンプル:

HTML+CSSでデザインを付けた画面サンプル:

このように、WEBの画面はHTMLで書いたタグと、デザインを設定するためのCSSを使ってできています。

HTMLとCSSの関係性について

つぎに、HTMLとCSSの関係性について解説します。HTMLにCSSでデザインを設定するためには、HTMLのタグ、画面全体で1つだけ設定できるid、複数タグで使えるclassをHTMLのタグで指定して、タグ・id・classごとにCSSでデザインを設定します。

HTMLサンプルコード:

CSSサンプルコード:

画面サンプル:

このサンプルでは、「<h1>HTMLとCSSの連携確認サンプル</h1>」の見出し1 タグに対して、以下デザインを設定しています。

また、HTMLのコードで「<input type=”button” ~ >」のボタンのタグにclassで「btn」、idをそれぞれ「blue_btn」「pink_btn」「yellow_btn」として設定し、CSSで以下のように書くことでデザインを付けています。

このように、HTMLのタグ、画面で1つだけのid、複数のタグで使えるclassを使ってデザインを付けています。

HTMLとCSSの関係性からデータの規則性を見つける方法

ここまでHTMLとCSSの関係性について解説してきました。

次は、この知識を使ってデータの規則性をHTMLレベルで見つける方法について解説します。VBAでは、HTMLとCSSの関係性のようにタグ、id、classを指定してデータを取得することができます。

  • idで指定する場合:画面にデータが1つなので1つのみ値を取得できる
  • タグ・classの場合:複数あるためデータがリスト(配列)で取得できる

つまりHTMLで見たときに、欲しい情報がidの場合はidを指定して取得、タグ・classの場合はリストで一旦取得し、リストの数分処理をループして取得する流れとなります。

以上のことを踏まえ、さきほどのGoogleの検索結果一覧を見てみましょう!

枠線で囲った部分が同じデザインになっていますよね。1つではなく、複数同じデザインなので「タグまたはclassでデザインが指定されていそう」ということがわかります。

次に、実際にHTMLのコードを見てみましょう!HTMLのコードはGoogle Chromeのデベロッパツールで確認できます。「Ctrl + Shift + I」または「F12」でデベロッパーツールを開くと次のような画面になります。

デベロッパーツールを開いたときの画面:

ここから規則性を調べるために、検索結果のHTMLコードを見る方法について解説します。HTMLが表示されているデベロッパーツールの左上にあるボタンをクリックしてから、画面でHTMLを調べたい部分をクリックします。

画面の要素をクリックしてHTMLのコードを確認する方法:

HTMLコードを見てみると、「<div class=”g”>」で開始しているHTMLタグで、「タイトル・URL・説明」のデータを取得できそうなことがわかります。

ただ、classは他のHTMLタグでも使われているかもしれないので、検索結果一覧以外に使われていないか確認が必要です。Ctrl + Fを押してデベロッパツールの検索ボックスに「”g”」を入力することで、「”g”」をつかっているHTMLの場所を調べることができます。

Ctrl + Fで開いた検索ボックスに「”g”」を入れたときの画面:

Enterキーをもう一度押すと「”g”」が使われている次の場所に移動するので、検索結果の2つ目に移動するか確認します。Enterキーを押して表示した「”g”」が使われている2番目の場所:

Google検索結果の2番目に移動しましたよね。これで、『「class=”g”」のデータを取得すれば検索結果一覧のリストを取得できる』ということがわかりました。ここまできたら、後は簡単です。

「タイトル・URL・説明」を同じように、特定する方法を調べます。まずは、タイトルを見てみましょう。

タイトルを選択したときのデベロッパーツールの画面:

h3タグでタイトルが設定されています。そのため、「class=”g”」で取得したリストのデータの中にある「h3タグ」のデータがタイトルになります。同じように、URL・説明の部分も見てみましょう。

URLを選択したときのデベロッパーツールの画面:

説明を選択したときのデベロッパーツールの画面:

URLは「class=”iUh30″」のclass、説明は「class=”st”」を使っています。そのため、「class=”g”」で取得したリストのデータの中にある「class=”iUh30″」のデータでURL、「class”st”」のデータで説明を取得することができます。

このように、HTMLのタグ・id・classから規則性を見つけることで、データの取得方法を調べることができます。

VBAでIE操作する処理を書く方法

次に、VBAでIE操作する処理を書く方法について解説します。VBAでIE操作の処理を作る流れは、次のとおりです。

手順1:IE操作するための参照設定を追加する
手順2:IEを開く
手順3:URLを指定してページを開く
手順4:画面の情報を全て取得
手順5:欲しい情報にデータを加工して正しく取得できるか確認する
手順6:ループ処理でリストの数分シートにデータを書き込む
手順7:IEを閉じる

それでは、手順1から解説しますね。

手順1:IE操作するための参照設定を追加する

最初に、IEを操作するための参照設定を2つ追加します。

  • Microsoft HTML Object Library
  • Microsoft Internet Controls

参照設定の追加方法は次のとおりです。

1. VBEを開いて「ツール」→「参照設定」を開く

2. 2つの参照設定をチェックしてOKボタンをクリック

これでIE操作をする準備ができました。

手順2:IEを開く

ここからは「サンプルコード + コードの解説」の流れで、手順ごとにソースを追加して解説します。まずは、IEを開く方法です。

IEを開くサンプルコード:

実行結果:

IEを起動するために「CreateObject(“Internetexplorer.Application”)」でIEを変数objIEにセットし、「objIE.Visible」でVBAを実行したときのIEの表示/非表示を設定します。

この例では、objIE.VisibleをTrueに指定しているため、IEの画面が開きます。

手順3:URLを指定してページを開く

次に、URLを指定してページを開く方法について解説します。

URLの指定を追加したサンプルコード:

実行結果:

「objIE.Navigate URL」で指定したURLを開くことができるので、URLを入れた変数strURLを指定して「VBA+侍エンジニア+入門」で検索したURLを開いています。

Google検索では「https://www.google.co.jp/search?q=検索キーワード」で指定した検索キーワードの結果を表示することができるため、文字列型の変数strSearchWordに「VBA+侍エンジニア+入門」を入れて、strURLに「https://www.google.co.jp/search?q=」とstrSearchWordを文字列結合した文字列を使っています。

手順4:画面の情報を全て取得する

次に、開いた画面の情報を取得する方法について解説します。

「Application.Wait Now() + TimeValue(“00:00:03”)」で画面が読み込まれるまで3秒待ったあと、「objIE.Document」で画面のデータをHTMLDocument型の変数htmlDocに入れています。

手順5:データを加工して正しく取得できるか確認する

次に、取得したデータを欲しい情報に加工して、値を確認する方法について解説します。検索結果「タイトル・URL・説明」の1番目のデータを取得するサンプルコード:

取得場所の画像:

実行結果:

タグ・class・idの取得方法は以下のとおりです。

  • タグ:getElementsByTagName(タグ名)
  • class:getElementsByClassName(クラス名)
  • id:getElementById(id名)

そのため、最初に「htmlDoc.getElementsByClassName(“g”)」で「タイトル・URL・説明」のグループを取得しています。

そのあと、1つ目の検索結果を取得するために要素数0を指定して、次のようにデータを取得しています。

  • タイトル:listData(0).getElementsByTagName(“h3”)(0).innerText
  • URL:listData(0).getElementsByClassName(“iUh30”)(0).innerText
  • 説明: listData(0).getElementsByClassName(“st”)(0).innerText</li>
最後に「.innerText」をつけることで、テキストデータを取得しています。これで、Googleの検索結果の1つ目のデータがとれていることを確認できました。

手順6:ループ処理でリストの数分シートにデータを書き込む

次に、取得したリストの数分Excelにデータを書き込む方法について解説します。今回は、データを書き込むためのシートを事前に用意しました。

「データ一覧」シート:

リストの数分データを書き込むサンプル:

実行結果:

「htmlDoc.getElementsByClassName(“g”)」で取得したデータの数分For Eachのループ処理をして、処理の中で「No、タイトル、URL、説明」を取得してセルに書き込む処理を書いています。

また、データは7行目から始まっているので、Cellsの行は「7 + i」にし、iはループ処理の最後に「i = i + 1」をしてループするごとに行数が増えていくようにしています。

手順7:IEを閉じる

最後に、IEを閉じる方法について解説します。

IEを閉じる処理を入れたサンプルコード:

「objIE.Quit」でIEを閉じて、「Set objIE = Nothing」でobjIEを空にしてメモリを開放しています。これで、Google検索結果一覧を取得してExcelに書き込む処理が完成です。

補足:Excelのシートにボタンを作る方法

ここまでの説明でIE操作でWEBからデータを取得することはできるのですが、Excelでツールを作るときはシートにボタンを置いて処理を動かすことが圧倒的に多いです。

例えば、次のように検索キーワードを入力して「データ取得ボタン」をクリックすると検索結果一覧を取得するようなツールを作れるようになります。

そのため、シートにボタンを追加して処理を動かす方法を合わせて覚えておくのがおすすめです。シートにボタンを追加する方法については以下で詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】シート上にボタンを追加する方法について徹底解説!
更新日 : 2019年4月16日

まとめ

今回は、VBAでIE操作する方法について徹底的に解説しました。VBAでIE操作するためには、HTMLとCSSの関係性についても覚える必要があるので、慣れるまでは少し大変かもしれません。

ただ、仕事の幅が広がったり、社内から重宝される存在になれたり、副業でVBA案件を取りやすくなったりとIE操作ができたときのメリットは多いです。ぜひ、IE操作にチャレンジしてみてくださいね!

Excel VBAを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Excel VBAを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、より深くExcel VBAについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Excel VBAならではの学習方法や、現役エンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta2_vba2

LINEで送る
Pocket

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説