ネットの情報を自動収集する − GoGoマクロ!のWebサイト

HOME > レッスン > ネット情報自動収集

ネットの情報を自動収集する

 - ブラウザを起動して連続「Yahoo! Google検索」するまで -



今回は、ネット上の情報を自動で収集する為のマクロ作成の手順を詳しく解説します。 今回から、いよいよの「IE連携」がテーマです。

IE連携のIEとは、皆さんよくご存じの Internet Explorer(インターネット・エクスプローラ)というマイクロソフト社製の ブラウザ(インターネットを閲覧するためのソフトウェア)のことです。連携というのは この場合、Excel以外の他のソフトをExcelからマクロで操作する、といった意味になります。

それで、ネット上を調べれば色々なサイトで色々とサンプルコードや解説がなされているとは思いますが、やはり 初心者にとってはとにかくどれも見るからに「むずかしそー」となってしまうと思いますので、、たとえば 「ビジー状態待ち?」なんて言われたって、さっぱりわかんないですよね。

他のソフトとの連携というのは、前回のワードの時と同様に確かに難しいテーマではありますが、でも そこはそれ、完全初心者向けの「マクロをはじめよう!」とタイトルのついたこの講座でありますから、その名にかけて シンプルに(難しそうなものは最大限に削ぎ落として)、初心者でも段階的に作っていけるように、今回から数回にわたって このテーマやっていきたいと思います。

加えて、ネット上や参考書ですとみな「完成サンプルコード+解説」が 載っているというスタイルのものばかりなので、初心者の方は 必ず「どこをどう直せばいいの・・・?」となってしまうわけでありますが、

何度も言っているように それは作っていく過程が見えてこないから(すなわち自分用に応用するのが難しい・・・)なわけでありますので、

この講座では、その完成コードまでに至る過程を手順を追って進めていきますので、自分のオリジナルに直す際に 全部を理解するという必要がありません。(この作る手順の3番目だけ理解して、そこをちょっと自分用に 変えていけばよいだけ・・・というように簡単応用ができるようになっています。)

今回のこのIE連携のシリーズも、ぜひ皆さんのネットからの自動情報収集に役立てていっていただければ と思っています。

それで、今回はその手始めに表題にある「検索サイトを自動で立ち上げて 検索結果を自動表示させる」というところからやっていくことにします。


注)
今回のレッスンはお使いのパソコンにIEがインストールされていることが前提 となります。(普段、Firefox等の別ブラウザを使っている方でも(通常 使用するブラウザとして設定されていなくても)PCにIEがインストールされていれば 可能ですが、マックPC等お使いでIEが無い方は実行ができません のでご了承ください。)



1)
それでは、まずはじめにいつものようにマクロの記録を使って
その基となるプログラム作りから始めます。
──────────────+
1.エクセルを起動させます。(空のエクセルを立ち上げてください)

2.マクロの記録を開始します。
 [開発]タブの[コード]で [マクロの記録]をクリック →
「マクロの記録」画面が出るので、そのまま[OK]をクリック。

3.ここでA2のセルを選択し、とりあえず 111 と打ってください。

4.マクロの記録を終了させます。
 [開発]タブの[コード]で [■記録終了] をクリック。
(記録終了ができない場合は、一度[Enter]キーを押して
 入力モードを解除してから行ってください。)
──────────────+



2)
では、いま作ったプログラムの中身をのぞいてみます。
──────────────+
1.まず、いつもの様にプログラム用の画面を表示させます。
 [開発]タブの[コード]で [Visual Basic]をクリック

2.この画面の左上半分の[+標準モジュール]という所の+の部分
 をクリックすると、そのすぐ下に[Module1]と表示されるので、
 その[Module1]をダブルクリックします。
──────────────+


++++++++++++─
Sub Macro1()

  Range("A2").Select
  ActiveCell.FormulaR1C1 = "111"
  Range("A3").Select
End Sub
++++++++++++─



3)
それでは、このプログラムにちょっと手を加えていきます。
──────────────+
1.まず、いつものパターンで仮置きした

  ActiveCell.FormulaR1C1 = "111"

 を、セルからのデータ取得である下記の構文に
 修正してください。

  a = ActiveCell.Value

2.次に、一つ下記のマクロの全部を(Sub から End Sub まで
 の計16行を)コピーして、今の Macro1 の End Sub の下に 
 そのまま(どどーんと)貼り付けてください。

Sub Yahoo検索(keyWD)
  Set objIE = CreateObject("InternetExplorer.Application")
  strURL = "http://www.yahoo.co.jp/"
  With objIE
    .Visible = True
    .Navigate2 strURL
    Do While .Busy = True
      DoEvents
    Loop
    Do While .document.ReadyState <> "complete"
      DoEvents
    Loop
    .document.getElementById("srchtxt").Value = keyWD
    .document.forms(0).Submit
  End With
End Sub

3.最後に、Macro1 最後の行

  Range("A3").Select

 を、消して下記の1行に置き換えてください。

  Call Yahoo検索(a)
──────────────+

修正した後のプログラムは下記の様になります。

++++++++++++─
Sub Macro1()

  Range("A2").Select
  a = ActiveCell.Value
  Call Yahoo検索(a)
End Sub

Sub Yahoo検索(keyWD)
  Set objIE = CreateObject("InternetExplorer.Application")
  strURL = "http://www.yahoo.co.jp/"
  With objIE
    .Visible = True
    .Navigate2 strURL
    Do While .Busy = True
      DoEvents
    Loop
    Do While .document.ReadyState <> "complete"
      DoEvents
    Loop
    .document.getElementById("srchtxt").Value = keyWD
    .document.forms(0).Submit
  End With
End Sub
++++++++++++─

ちょっと解説しますと、

まず、最初の Sub Macro1 では、セルA2のデータを変数aに取り込んでいます が、これがYahoo!の画面で検索する際の「検索キーワード」となります。

次の Sub Yahoo検索(keyWD) ですが、これは、
「IEを立ち上げて、Yahoo!画面を表示して、検索ワードを入力し、検索ボタン を押す」ということをするマクロとなりますが、これは何度かこの講座でも出 てきているいわゆるブラックボックス(この中身を理解しようとしたりいじっ たりしなくてよいもの)だという意味合いで、そのまま何も考えずに(基本、 何もいじらずにcallするだけで)ご利用ください。

(よほど暇で時間のある方はネット等で調べればある程度理解することは可能 かとは思いますが、でもそんな時間があったら他にマクロで勉強すべきことは 沢山あるだろうと思いますので、ここは素直にブラックボックスという扱いで 望んでくださいね。)

最後の修正では、そのブラックボックスに先ほどの変数 a (検索キーワード) を渡してあげて呼び出し(実行を)しています。



4)
それでは、さっそく実行してみましょう。
──────────────+
1.エクセルの画面に戻って、A2のセルに検索したいキーワード
 (なんでもいいですが、)ここでは「東京オリンピック」と
 入力しておくことにします。

2.それでは、実行します。
 [開発]タブの[コード]で [マクロ] をクリック →
「マクロ」画面が出るのでそのまま[実行]をクリック。
──────────────+

いかがでしょうか?

ブラウザ(IE)が立ち上がって、Yahoo!の画面で「東京オリンピック」の 検索結果が表示されるまでが全自動で行われたことが確認できればOKです。

これで、いま招致合戦の熱い「東京オリンピック」の歴史やなんかが一目で 確認できたことと思います。^^

要するに今回のIE連携マクロでは、

「ブラウザを立ち上げる」→「Yahoo!の画面を表示して検索窓にキーワード を入力する」→「検索ボタンを押す」といった、普段よくやっている一連の 手操作を全部マクロが自動でやってくれるということになるわけです。

しかも、Sub Macro1 の方は普段にも増して至って簡単です。そこから ブラックボックスとしてこの Sub Yahoo検索 をただ呼び出せればよいだけと いうことになっていますから、すこぶる初心者ライクなマクロで実現できま したよね?!

これにもうちょっと付け足すと更に驚きの便利なマクロになるかと思います ので、そう少しこれを機能拡張してみます。



5)
それでは、このプログラムにちょっと手を加えてみます。
──────────────+
1.まず、Macro1の全体にいつものループ処理の基本形

  For i = 1 To 10
    ・
    ・
  Next i

 をかぶせて、下記に修正します。

  For i = 1 To 10
    Range("A2").Select
    a = ActiveCell.Value
    Call Yahoo検索(a)
  Next i

2.そうしたら次に、いまのループ処理の中の固定部を
 いつものように可変に変えていきます。

    Range("A2").Select

 を、可変の形に直した

    Range("A" & i).Select

 に書き改めます。

3.最後に、ループ回数も自動にするために、For文の

  For i = 1 To 10

 を、下記の2行に書き変えてください。

  n = Cells(Rows.Count, "A").End(xlUp).Row
  For i = 2 To n
──────────────+

修正した後のプログラム( Macro1 )は下記の様になります。

++++++++++++─
Sub Macro1()

  n = Cells(Rows.Count, "A").End(xlUp).Row
  For i = 2 To n
    Range("A" & i).Select
    a = ActiveCell.Value
    Call Yahoo検索(a)
  Next i
End Sub
++++++++++++─

今の修正も、この講座ではすこぶるいつもやっているループの基本を加えて 繰り返すプログラムに変えたというだけですので、特にもう解説する必要も ないかと思いますが、これでシートに並べたいくつものキーワードの検索が 一遍にできるというように修正したものです。



6)
それでは、再び実行してみましょう。
──────────────+
1.エクセルの画面に戻って、実行する前にまずテスト用のデータ
 を入力します。

 以下のテキスト(見出し行の「検索キーワード」を含む計6行)
 をコピーして、セルA1の位置に そのまま貼り付けてください。
 (上書きしてください。)


検索キーワード
あなたの番です
ハンディファン
令和おじさん
翔んで埼玉
ワンチーム


2.それでは、実行します。
 [開発]タブの[コード]で [マクロ] をクリック →
「マクロ」画面が出るのでそのまま[実行]をクリック。
──────────────+

いかがでしょうか?

次々とブラウザが(5つ)自動で立ち上がってきて、Yahoo!の画面に各検索 キーワードの検索結果が表示されればOKということになります。

というわけで、皆さんも自分の興味のあるキーワードをシートに並べて(何個 でも可)マクロを実行して、色々と自動検索を試してみてください。




※改定情報※
先頃、Yahoo検索サイトの内部コードが(見た目には何ら変わりはありませんが、) 大幅に変更されました。 これによって、上記に示したマクロ「Sub Yahoo検索」の修正が必要となりましたので、 下記のコート修正(赤印)にてご対応ください。

++++++++++++─
Sub Yahoo検索(keyWD)
  Set objIE = CreateObject("InternetExplorer.Application")
  strURL = "http://www.yahoo.co.jp/"
  With objIE
    .Visible = True
    .Navigate2 strURL
    Do While .Busy = True
      DoEvents
    Loop
    Do While .document.ReadyState <> "complete"
      DoEvents
    Loop

    '旧コード
    '.document.getElementById("srchtxt").Value = keyWD
    '.document.forms(0).Submit

    '↓改定後↓
    .document.getElementsByName("p")(0).Value = keyWD
    .document.getElementsByName("sf1")(0).submit

  End With
End Sub
++++++++++++─


NEXT >>
ネットの情報を自動収集する補足(Google検索時のコード)


マクロ教材のご案内 >>
VBA恐怖症な人に最適!『三太郎式』本格マクロ教材です。


 

▼一から自分で作れるマクロ講座の登録はこちら((無料))  まぐまぐ
Go!Go! エクセルマクロをはじめよう! (マガジンID:0000135169)   
メルマガ登録
  メールアドレス: