【お手軽カンタン自動化!エクセルVBA × IEで身代わりロボットを作る最短8ステップ】~その2~最小限のひな型を覚えよう
みなさんこんにちは。taka.(@teihen_escape)です。
さて、いよいよ実際にコードを書いていきます。
といっても、細かな話はいったん気にせず、ざっくりと行きますので、気楽にどうぞ。
今回やろうと考えているのが、ヤフーで「VBA」と検索して結果を表示させる、という簡単なものです。
手順としては以下の三つ。
1、検索窓にVBAと入力
2、検索ボタンをクリックして、ページが切り替わるのを待つ
3、検索結果が表示される
シンプルですね。
ではまず初めに結論として、コードの全体像を下記します。
Sub yahoo検索()
Dim objIE As InternetExplorer
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.navigate "https://search.yahoo.co.jp/"
Application.Wait Now + TimeValue("00:00:10")
'検索窓に入力後、検索ボタンをクリック
objIE.Document.getElementById("yschsp").Value = "VBA"
objIE.Document.getElementsByClassName("b")(0).Click
'objIE.Quit
'Set objIE = Nothing
MsgBox "完了しました"
End Sub
コードを詳しく解説
ではブロックにわけてぞれぞれのパートを説明していきます。
まず最初と最後の行について先に触れておきますと、
Sub ●●()
End Sub
これらは必ずセットになり、この二つに囲われた中にコードを書いていきます。●●のところはこのプログラムの名前です。今回は「ヤフー検索」としています。
IEを操作するための準備をする
Dim objIE As InternetExplorer
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
1行目:操作するIEを入れるための変数を準備(変数は入れ物くらいに思っておけばOK)
2行目:その入れ物に新しいIEを作ってセットする
3行目:ここがTrueだとIEが表示されて、Falseだと非表示になります
特定のURLを開く
objIE.navigate "https://search.yahoo.co.jp/"
"" で囲まれた部分に開きたいURLを入れます。今回だとヤフーの検索ぺージ。
IEの表示待ちをする
Application.Wait Now + TimeValue("00:00:10")
IEが開ききる前に次の命令が走るとエラーになるので、すべて表示されるまで待ちます。
今回は少し多めに10秒待たせています。
秒固定ではなくもっとフレキシブルに待たせるやり方もありますが、ここはいったんシンプルに上記でOK。
検索窓に「VBA」と入力して検索ボタンを押す
'検索窓に入力後、検索ボタンをクリック
objIE.Document.getElementById("yschsp").Value = "VBA"
objIE.Document.getElementsByClassName("b")(0).Click
1行目:イコールの左側は一旦そういうものだと思ってもらってw、右側の "" で囲われている文字を検索窓に入力
2行目:検索ボタンをクリック。これもいったんそういうものと思ってOK
ちなみにここで
「'検索窓に入力後、検索ボタンをクリック」
と日本語が登場していますが、アポストロフィを一番左に入れることで、コード内に説明用の日本語を入れることができます。
複雑なコードを書くときなどに特に便利なので、これもあわせて覚えましょう。
IEを閉じる
'objIE.Quit
'Set objIE = Nothing
これはもうニコイチとしてセット必ず覚えてください。
深く考えずに暗記しちゃっていいものですが、あえて簡単に説明すると、
冒頭で、入れものを作ってIEをセットして、というくだりがありましたが、
コードの最後に、使いおわったらそれを破棄するよ的なことを書きましょうね、という感じですね。
いったんこれも先ほどと同じように頭にアポストロフィをつけ、コードとしては認識させないように敢えてしています。
理由としては、今回に関しては、コードの実行が終わったあとにIEを閉じずに残しておきたいからです。
通常は普通にコードとして認識させる(IEを閉じてしまう)形でOK。
処理が終わったことをダイアログボックスで知らせる
MsgBox "完了しました"
""でくくられた中の文字をダイアログ表示させることができます。
このコードで作れるダイアログは「OK」ボタンがひとつあるだけの簡単なものですが、「YES」「NO」を備えたものなども作り方によっては可能です。
実際に動くか試してみる
それでは最後に実際に動くかの確認をしてみましょう。
VBEのツールバーの中に再生ボタンのようなものがあるんですが、
ここをクリックしてみてください。
IEが立ち上がり正常に動作すれば、今回は無事に終了です。おつかれさまでした!
***
如何でしたでしょうか。
今回は簡単なフォーマットをもとに実際にコーディングをしてみました。
次回はこれを土台に、もう少し使いまわしの利く形にフォーマットを変形していこうと思います。お楽しみに!
それでは、本日も最後まで読んで頂き有難うございました^^/
【お手軽カンタン自動化!エクセルVBA × IEで身代わりロボットを作る最短8ステップ】
0、 なぜVBA×IEなのか
1、 参照設定
2、最小限の型を覚えよう ←←←←←←←←←← イマココ
3、型を使いやすく改良しよう
4、 IEの表示待ち
5、 ループ処理
6、 IF分岐
7、 DOM操作その一
8、 DOM操作その二
この記事が気に入ったらサポートをしてみませんか?