Excelマクロでブラウザ(IE)操作。交通費をExcelから読取→サイトで検索→Excelへ書込

Excelマクロで、ブラウザ(IE。InternetExplorer)を操作することもできます。
交通費検索のしくみで解説してみました。

IMG_7331

※カフェにて iPhone X

ExcelマクロでIEを操作する設定

ExcelマクロでIE(インターネットエクスプーラー)を操作するには、次のような設定をしておきましょう。

VBE(ExcelでAlt+F11)で、[ツール]→[参照設定]を選び、

次の2つにチェックを入れて、Enterキーを押します。
これで設定は終わりです。

ex-it_13

まずは、次のプログラムを書きましょう。
IEを動かす設定です。
(IEは任意です)
〇〇.Visible = True
だと、実際にIEを表示します。
開発中は、表示させて動きを確認したほうがやりやすいです。

IE.Navigate “transit.yahoo.co.jp”で開くサイトを指定します。

F5キーを押して実行して、IEが起動するか確認しましょう。


■スポンサードリンク

ExcelマクロでIE操作を表現するには

ExcelマクロでIEを操作するときに、問題となるのは、「どうやって伝えるか」です。
Excel内であれば、セル名やシート名で指定できます。
IE、ブラウザ内ではどうすればいいのでしょうか。

実は、ブラウザ内にも名前がついています。
目に見えませんが、IEでは、その部分を右クリックして[要素の検査]をすれば、中身が見れるのです。
この場合はyahoo!路線情報の[出発]のボックスを右クリックしてから選びましょう。

ex-it_14

IEの下になにやら表示されます。
これがHTMLというプログラムです。
さらに、ボックスを指定したまま再度[要素の検査]を選びましょう。

ex-it_15

該当部分のプログラムが出てきます。
このうち、id=”sfrom”に注目し、このsfrormをExcelマクロで指定するのdす。

ex-it_16

Excelからの読込

Excelファイルはこうなっていますので、2行目の出発駅(セルB2)を、sfromに入れていきます。

image

Excelマクロでは、
〇=△
で、
〇に△を入れる
という意味です。

IEのsfromに、ExcelのセルB2を入れる
ので、
IE.Document.getElementById(“sfrom”).Value = Range(“b2”).Value
と入れます。

IE.Document.getElementById(“sfrom”).Valueは、「IEのIDがsfromの値」という意味です。
id=”sfrom”をgetElementById(分割すると、get Element By ID)でとってきます。
ex-it_16

到着駅も同様に、
IE.Document.getElementById(“sto”).Value = Range(“c2”).Value
とします。

検索ボタンのクリック

次に検索ボタンをクリックしましょう。
こういった形式のものは、フォームと呼ばれています。


■スポンサードリンク
■井ノ上陽一のプロフィール

このフォームがどんな名前か、[要素の検査]で調べると、searchという名前がついていることがわかります。

検索ボタンは、submitです。
Excelマクロには、
IE.Document.forms(“search”).submit
と書きます。

Excelへの書込

Excelへは、E列に書き込んでいきます。
ひとまず、セルE2に書き込んでいきましょう。
image

こう書きます。

Range(“e2”).Value = Replace(IE.Document.getElementsByClassName(“fare”)(0).innerText, “円”, “”)

195円という交通費は、fareという名前がついています。

ただ、これは、IDではなく、classというものです。
IE.Document.getElementsByClassNameとします。
さらに、この場合、3つともとってきてしまうので(そういうものだと思っていただければ)、そのうちの1番上という意味で、
IE.Document.getElementsByClassName(“fare”)(0)
にしています。

プログラム上は、0、1、2、3・・・と数えるので、一番上は0なのです。

そして、このままだと、「195円」と、円がついてしまうので、replaceで、円を””(ブランク)に変えています。

以上をつなげたのがこのプログラムです。

Do While IE.Busy Or IE.ReadyState < 4
DoEvents
Loop
という部分を随時入れて、IEのページ読込を待っています。
そうしないと、プログラムが速すぎて、データを取り切れないことがあるからです。
(それでも不安定ですが)

さらには、
For i = 2 To Range(“a” & Rows.Count).End(xlUp).Row
(2行目からデータの最後まで繰り返す)

Next

ではさんで、セルの部分を2→iに変えると、シートにあるデータの数だけ、「読取→検索→書込)を繰り返します。

RPAとの比較

「Excelでブラウザを操作する」
というと、RPAでもできます。
これらを比較すると、RPAのほうは、ブラウザの操作を記録して動かすことができるので、やはり敷居は低いといえるでしょう。
ex-it_18

他のアプリも操作しやすいです。
プログラムを書く量も、RPAは少なくて済みます。
とはいえ、RPAもプログラミングの知識は必要なので(繰り返し、変数など)、RPAからプログラミングに慣れて、Excelマクロをやってみるのもいいでしょうね。

UiPath×Excel。Excelデータを読み取り、ブラウザで交通費検索。無料で使えるRPAツール。 | EX-IT

PythonでExcelからデータ読込→サイトで交通費検索→Excelへデータ書込 | EX-IT

サンプルはこちらです。

EX-ITサンプル 交通費検索IE.xlsm


■編集後記

昨日は、Excel本の原稿を提出しつつ打ち合わせ。
11月に出せそうです。

その後、RPA入門セミナーを開催しました。

■昨日の1日1新
※詳細は→「1日1新」

Excel本 原稿渡し
どぶろくハイボール

■昨日の娘日記
体のパーツを指さしながら言うのが好きなようです。
おめめ、くち、はな、みみ、おしり、あしを覚えました。


■スポンサードリンク ■井ノ上陽一のプロフィール
■スポンサードリンク



井ノ上陽一のVALU
■著書
【監修】十人十色の「ひとり税理士」という生き方
ひとり税理士のIT仕事術―ITに強くなれば、ひとり税理士の真価を発揮できる!!
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
毎日定時で帰っても給料が上がる時間のつかい方をお金のプロに聞いてみた!
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
『社長!「経理」がわからないと、あなたの会社潰れますよ』
『そのまま使える経理&会計のためのExcel入門』