ie-excel

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

Excel VBAでIEを操作 テキストボックスに入力、検索ボタンをクリック

2018/11/16

Excelで目的のURLを自動的に開き、そのページにあるハイパーリンクから次のページへと遷移する方法を前回は例示
今回はハイパーリンクではなく、検索窓に文字を入れ、検索先へと遷移方法です。

そこで今回のお題は
・「Yahoo!Japan」でファイナンスのページへ自動リンクする
・その上で、「任天堂」の株価ページへと遷移する
を実践。

前準備

  • Visual Basic Editor の画面から「ツール」→「参照設定」を選択します。
  • 「Microsoft Internet Controls」と「Microsoft HTML Object Library」にチェックを入れて、OKを押す

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

実際のコード
マクロを実行したら、「Yahoo!ファイナンス」で「任天堂」の株価が開いていませんか?
(Yahoo!側でソース修正されたらうまく動かないかもしれません。)

ではソースの解説です。

Yahoo!ファイナンスを開くところまで(上記の青字箇所)は解説済みのために、それ以降を説明します。
(念のため、上記ソースにはおさらいの意味を込めて簡単なコメントを掲載しています。)

後ほど出てきますが、Sleep処理をExcelで実現するための記述です。
スリープ関数(API)の宣言していますが、Sleep命令を使用する場合の「お約束」として覚えておけばいいでしょう。

続いてのコードです。

1秒ほどSleep(待機)させています。
1/1000秒単位に数字を記述するため、20秒Sleepさせるためには「Sleep(20000)」と記述します。

Sleepさせているのは、Excelマクロ側の処理が高速で、直前の命令(アンカータグをクリック)したことをほとんど待たず、次の処理を行おうとします。
そのため、
・サイトがすでに開かれているものと勘違い
・目的のページの直前のページで以下の処理をする
可能性があるために、あえて待機させています。

どの程度待機させるかは、各PCの処理速度に依存します。
(うちのPCは2004年頃のモデルですが1秒も待てば十分です)

続いてのコードです。

Yahoo!ファイナンスも、Googleの検索も、検索キーワード入力用のテキストボックスははinputタグで形成されています。
同様に検索ボタンもinputタグで形成されています。
そのため、inputタグを処理をするために、inputタグを1件ずつチェックして、該当のタグがあれば
・上記テキストボックスに文字を入れる
・株価検索ボタンをクリックする
処理をすればいいことになります。
ことにあります。

以下は実際のYahoo!ファイナンスのコードです。

テキスト、検索ボタンそれぞれに目印である「ID」が今回は幸いにも定義されていました。
ID名は同一ページ内でユニークとなるため、重複することは「原則」ありません。
そのため、今回はこのIDで処理するタグを特定していきます。

なお、Excelで操作する際に関わらず、HTMLは同じタグを非常に多く用いるために、タグの限定をすることが重要になってきます。
このターゲットの探し方は後日説明します。

今回はこの目印である「ID」を目がけて処理をします。

タグ内の「ID=」に続く文字列は、IDに収録されています。
検索キーワードのテキストボックスには、上記のとおりid="searchText"と定義されています。
そのため、
Obj.ID = "searchText"
となるinputタグを拾い上げていきます。

検索キーワードを入れるには、テキストボックスのValue値に文字を入れることとなりますので、
Obj.Value = "任天堂"
と記述し、「任天堂」という文字列をテキストボックスに入れます。

続いて、ボタンの特定方法です。
これも上記同様に検索ボタンには id="searchButton"と定義されていますので、
Obj.ID = "searchButton"
となるinputタグを拾い上げます。

その上で、アンカータグ同様「Click」すれば、今回の場合でしたら任天堂の株価のサイトが開かれることとなります。

今回のポイントは
・クリック後はSleepで待機
・タグにIDが設定されていたら、タグの特定はIDを使用
・テキストボックスへの入力は、Valueを使用
・ボタンをクリックするには、「Click」を使用
といった4点かと思います。

-ExcelでIE操作