Excel シート上で入力したキーワードを Google、Yahoo で一括検索するマクロ(Excel VBA) ~コード説明~

シェアする

The following two tabs change content below.

松井 元(まつい はじめ)

静岡県三島市の松井会計事務所に勤務する理系税理士。 文理両方のスキルの融合を考えており、このブログは以下を中心に更新している。
●税金・会計に関すること
●IT(Excel、VBAなど)を使った業務効率化
●自分のこと(考え、私生活)

さらに詳細なプロフィールはこちら
松井会計事務所へのお仕事ご依頼・お問い合わせはこちら
税金・会計の無料メルマガはじめます

Excel シート上に入力したキーワードを Google、Yahoo で一括検索するマクロ(Excel VBA)について以前に記事を書きました。

キーワードを Excel シートに入力して検索ボタンを押せば、ブラウザーが2つ開いてそれぞれ Google での検索と Yahoo での検索をやってくれるというもの。

google-yahoo-search-code_1

今日は、このマクロのプログラミングコードについて説明します。

レクタングル大 広告

1、全プログラミングコード

先回の記事でも載せましたが、Excel VBA の全プログラミングコードを示します。

*なお、このコードは2018年4月13日時点で有効に動作したものとしてご理解下さい。

Google、Yahoo のサイトの HTMLのタグを一部拾ってコードに組み込んであるので、サイトのHTMLが変わると動作しなくなる可能性があります

1つの標準モジュールの中に2つのプロシージャを作ってあります。

Sub Google_Yahoo_Search プロシージャ

Sub Wait プロシージャ

2、プログラミングコードの説明

インターネット操作を行うためには、まずインターネット操作ができる状態にしなければなりません。

VBE(エディタ)を開き(Alt + F11)、ツール⇒参照設定で

・Microsoft HTML Object Library
・Microsoft Internet Controls

にチェックを付けます。

google-yahoo-search-code_2

Sub Google_Yahoo_Search プロシージャ

変数の定義

変数の定義です。

インターネット操作では、ブラウザーや HTML のタグ(<title>~</title> のような開始と終了の表記)で囲まれた文章(ドキュメント)1つ1つがオブジェクト(操作の対象)となります。

変数 IE1、IE2 はブラウザー(インターネットエクスプローラー)を入れるためのオブジェクト変数で、 InternetExplorer型として定義しています。

なお、このInternetExplorerの部分をObject(全てのオブジェクトを対象とした型)として定義しても同様に動作します。

変数 objTAG は HTML のタグで囲まれた文章(ドキュメント)を入れるためのオブジェクト変数で Object型として定義しています。

*Web ページは HTML という言語でプログラミングされています。そして、HTML はタグで囲まれた文章(ドキュメント)の集まりなのです。

Excel シート上に入力したキーワードの読込み

この部分で Excel シート「キーワード検索」の中のセル「D4」に入力したキーワードを変数 Keyword に入れています。

インターネットエクスプローラの設定と Yahoo 、Google へのアクセス

ここでは、インターネットエクスプローラの設定と Yahoo サイトへのアクセスを行っています。

Set IE1 = CreateObject(“InternetExplorer.Application”)

によってインターネットエクスプローラ(オブジェクト)を作ってオブジェクト変数である IE1 に入れています。

変数の前に Set を付けなればならないので注意しましょう。

IE1 = CreateObject(“InternetExplorer.Application”)

としてはいけません。

IE1.Visible = True

とすることで、インターネットエクスプローラが表示される(目に見える)ようになります。仮に IE1.Visible = False とすればインターネットエクスプローラは表示されません。

IE1.Navigate2 “https://www.yahoo.co.jp/”

とすることで Yahoo の URL にアクセスします。

Call Wait(IE1)

とすることで Wait プロシージャを呼び出しています。

Wait プロシージャについては下で説明します。Yahoo のサイトにちゃんとアクセスできるまで次の処理を待つためのプロシージャだと思って下さい。

検索ボックスへのキーワードの入力と検索ボタンのクリック

ここでは、Yahoo の検索ボックスへのキーワード入力と検索ボタンのクリックを行っています。

IE1.document は、Yahoo サイトの HTML のドキュメント(タグで囲まれた中身)を意味します。

getElementById(“srchtxt”).Value はドキュメントのうち ID が “srchtxt” であるもの(検索ボックス)の値を表しています。

Yahoo のサイトを開いてソース(HTML)を表示させると検索ボックスの ID が”srchtxt”となっていることが分かるので、そのIDを指定しているのです。

そして、検索ボックスに何も入れていない状態だと Value  は空になっているので、IE1.document.getElementById(“srchtxt”).Value = Keyword とすることで、先ほど Excelシートから読み込んだ Keyword を検索ボックスの値として入れてあげるのです。

お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
*リンク先は私が勤務する松井会計事務所の HP です。

◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆経理業務効率化コンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)

セミナー開催要望がありましたら、以下のリンク先にある個別のフォームよりお願い致します。
◆セミナー開催要望

税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録

getElementById(“srchbtn”).Click はドキュメントのうち ID が”srchbtn”であるもの(検索ボタン)をクリックすることを意味します。

なお、HTML を確認すると検索ボックス、検索ボタンの ID は以下のようになっていることが確認できます。

google-yahoo-search-code_3

なお、IE2 ではインターネットエクスプローラの設定と Googleサイトへのアクセスを行って、Yahoo の場合と同様に検索ボックスにキーワードを入れて検索ボタンを押しています。

検索ボックス、検索ボタンとも Yahoo と同じく ID で指定しています。

検索ボタンの ID はよく変わるようです。2018年4月13日の時点ではこのように↓なっていました。

ID が変わったら上記コードの ID 名の部分を書き直さなければなりません。

面倒ですが、サイト側の変更には対応しないといけないので。

Sub Wait プロシージャ

このプロシージャは、Sub Google_Yahoo_Search プロシージャから呼び出されて動作するものです。サイトにアクセスした際にそのサイトがちゃんと読み込みされるまで次の処理を待たせます。

サイトがちゃんと読み込まれる前に VBA が次の処理を行ってしまうと、処理が上手くいかないためそれを防ぐためのものです。IE.Busy はオブジェクト(objIE)の Busy プロパティを表しており、Webページが読み込み中かどうかを調べています。

objIE.Busy = False とすることでオブジェクト(objIE)は読み込み中ではない(読込み完了している)ことを意味します。

objIE.ReadyState はドキュメント(HTML の1つ1つの要素)の読み込みの状態を表しており、0~4の整数で指定します。

objIE.ReadyState= 4 とすることでオブジェクト(objIE)は読み込みは完了していることを意味します。

DoEvents は処理を OS に渡す操作となります。

——————–
Do Until (objIE.Busy = False) And (objIE.ReadyState = 4)
     DoEvents
Loop
——————–

とすることで、IE1、IE2 をobjIEとして受け取ってそれらがちゃんと表示されるまで(objIE.Busy = False かつ objIE.ReadyState = 4 となるまで)DoEvents を繰り返します。

つまり Do Loop を使うことでサイトがちゃんと表示されるまでずっと OS に処理を渡し続けて(DoEvents)、次の VBA 操作を行わせないようにしているのです。

3、まとめ

Excel シート上に入力したキーワードを Google、Yahoo で一括検索するマクロ(Excel VBA)のプログラミングコードについて説明しました。

冒頭にも示した先回の記事です。併せて読んでいただければと思います↓

通常 Excel シート上の操作を行う場合は、変数に普通に数値などを入れれば良いのですがインターネット操作の場合オブジェクト(操作対象)の理解が必要なので難しくなります。

なお、インターネットエクスプローラ(IE)操作については、こちらの書籍がとても参考になります。

お仕事のご依頼は、以下のリンク先にある個別のフォームよりお願い致します。
*リンク先は私が勤務する松井会計事務所の HP です。

◆税務・会計 顧問
◆税務・会計のスポットコンサルティング
◆経理業務効率化コンサルティング
◆Excel シートのオーダーメイド
◆Excel、マクロ(Excel VBA) のマンツーマンレッスン
◆東亜大学通信制大学院(法学専攻) 入試対策コンサル
◆その他のスポットコンサルティング(当ブログを読み何かご相談したい事項が出てきた方に向けたサービス)

セミナー開催要望がありましたら、以下のリンク先にある個別のフォームよりお願い致します。
◆セミナー開催要望

税金・会計についての無料メルマガをはじめます。配信をご希望させる方は以下のリンク先にあるフォームよりお願い致します
◆メルマガ登録
税理士試験まとめ、税法論文の書き方

————————————————

税理士試験についてのまとめはこちらです!

税法2科目免除大学院についてのまとめはこちらです!

kindle電子書籍を出版しました。

税理士試験の税法2科目免除のために大学院で税法論文(修士論文)を書いた経験を元に、大学院生としての目線から税法論文の書き方を体系化した書籍です↓

大学院での税法論文の書き方

本書籍の内容についてはこちらの記事をご確認下さい。

お問い合わせ・フォローボタン

———————————

よろしければフォロー下さい↓

Twitter フォローボタン:

Feedly フォローボタン:
follow us in feedly

Facebookページ:
*いいね!を押して頂くと更新情報が届きます。

レクタングル大 広告
レクタングル大 広告
関連コンテンツ



シェアする

フォローする