
taka



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
どうも、taka(@takabou63)です(^^♪
さて、前回の記事ではExcelでインターネットエクスプローラーを操作するメリットと準備を書いていきました。
今回は実際にインターネットエクスプローラー(以下IE)を操作する方法について解説していきたいと思います。
ExcelVBAでInternetExplorerを操作してみよう
では実際にExcelVBAでIEを操作してみましょう!今回はVBAで【YahooJapan】に接続し、【E-VBA.com】を検索する、というコードです。
Sub Sample() Dim objIE As New InternetExplorer '①IEを表示する' objIE.Visible = True '②YahooJapanに接続 objIE.navigate "https://www.yahoo.co.jp/" '③IEが表示されるまで待機 Do While objIE.readyState <> 4 DoEvents Loop '④検索窓に文字列【E-VBA.com】を入力 objIE.Document.getElementsByName("p")(0).Value = "E-VBA.com" '⑤Tag(input)の名前【検索】を探し出す。 For Each objInput In objIE.Document.getElementsByTagName("input") If InStr(objInput.outerHTML, "検索") > 0 Then '⑥名前【検索】を見つけたらクリック objInput.Click End If Next End Sub
コードの解説
では、さっそくコードの解説をしていきます。
1.IEの表示設定
まずはIEを表示するかどうかの設定ですVisibleプロパティを使用します。【True】で表示【False】で非表示になります。
'②IEを表示する objIE.Visible = True
2.指定したURLに接続する
次に指定したURLに接続します。接続するにはNavigateメソッドを使用します。Navigateメソッドは引数に設定したURLが表示されます。下記の場合は「https://www.yahoo.co.jp/」を設定していますので「YahooJapan」が表示されます。
'③YahooJapanに接続 objIE.navigate "https://www.yahoo.co.jp/"
3.IEが表示しきるまで待機させる
IEが最後まで表示されるまで待機する必要があります。IEが表示されるまで待たないまま処理を続けてしまうとエラーが起きてしまうのです。理由は簡単です、表示されていないものをクリックするなどの処理をしろというのが無理な話ですよね?そこで使用するのが【readyState】です。
readyStateはIEのWEBサイトを読み込み中かを判断するプロパティです。引数4は読み込み終了を意味します。
下記のコードはreadyStateの条件が満たされる(読み込み終了)までループし続けるコードです。読み込みが終了したときに次のプログラムに移行します。
'④IEが表示されるまで待機 Do While objIE.readyState <> 4 DoEvents Loop
4.VBAで検索窓に文字を打ってみる
さて、ここからホームページの操作を始めます。ここから先はHTML(ハイパーテキスト マークアップ ランゲージ)が多少かかわってきます。HTMLについてはまた後日詳しく解説します。簡単に言うとホームページはHTMLで出来ていてタグという印(マークアップ)することでテキストに特殊な効果を持たせることができる。くらいに覚えておいてください。
そしてこのHTMLの構成を知っておくことで今回の【Excel × IE】で出来ることが変わってきます。
getElementsByNameとはname 属性で指定した名前で要素リストを参照します。といっても解らない方も多いかもしれません。
画像の赤枠の中に【Name=”p”】という部分がありますね?これがname属性です。


下記のコードはname属性のpを指定してpの中に”E-VBA.com”を入力しなさいというコードになります。
'⑤検索窓に文字列【VBA】を入力 objIE.document.getElementsByName("p")(0).Value = "E-VBA.com"
続きまして、今度はgetElementsByTagNameというコードが出てきましね、これも上のgetElementsByNameと原理は一緒です。


Inputタグの内容を取得し、objInput.outerHTMLの中から指定した(”検索”)を検索してその位置を取得しclickをするというコードです。
⑥Tag(input)の名前【検索】を探し出す。 For Each objInput In objIE.document.getElementsByTagName("input") If InStr(objInput.outerHTML, "検索") > 0 Then ’名前【検索】を見つけたらクリック objInput.Click End If
実際にコードを実行してみる
実際に実行してみましょう、おそらくこのような画面になれば成功です!(T_T)
お疲れ様でした。


最後に
いかがでしたでしょうか?今回はまだExcelでIEを操作し、検索するというだけの単純なものでしたが、今後私自身も勉強をしてさらに深いところまで開設できるようになりたいと思いますので今後に期待していてください!!
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す