みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
エクセルVBAでInternet Explorerを操作する初心者向けのシリーズです。
節操なく色々なパターンを紹介しております。
前回は、ページャーを踏んで次々とページをクロールしていく方法についてお伝えしました。
今回はちょっと目線を変えまして、エクセルVBAでIEを操作してフォームにユーザー名とパスワードを入力してログインをする方法についてお伝えします。
おさらい:検索フォームにキーワードを入力して送信
以前こちらの記事で検索窓にキーワードを入力して送信する方法をお伝えしました。
ログインフォームへの値の入力と送信も基本的には同じ操作になりますので、おさらいとして、その際のプログラムを紹介します。
Sub MySub()
Dim keyword As String
keyword = InputBox("キーワードを入力してください")
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.Navigate "https://www.yahoo.co.jp/"
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.Document
With htmlDoc
.getElementById("srchtxt").Value = keyword
.getElementById("srchbtn").Click
End With
End Sub
流れとしては
- InputBoxで検索するキーワードを入力
- Yahoo!のページを開いてドキュメントを取得
- 検索窓にキーワードを入力
- ボタンをクリックして送信
という流れです。
ログインの場合は、検索キーワードのかわりにユーザー名とパスワードを入力すればOKです。
エクセルVBAでIEを操作してWordPress管理画面にログインする
今回、ログインするのは某サイトのWordPress管理画面です。
管理画面にログインするためには、ユーザー名とパスワードを入力して「ログイン」ボタンを押下します。
これをエクセルVBAでIEを操作して実行していきます。
Google Chromeで検証する
エクセルVBAでのIE操作の超お助けツールであるGoogle Chromeのデベロッパーツールを使って、操作対象となるformタグやinputタグを見つけていきます。
ログイン画面を開いた状態で Ctrl + Shift+ Iですね。
ウィンドウの左上「矢印マークのアイコン」をクリックした上で、目的の要素をクリックすると、HTML内の該当箇所を探しあててくれます。
結果、今回取得する要素は
- ユーザー名の入力フォーム:id="user_login"のinput要素
- パスワードの入力フォーム:id="user_pass"のinput要素
- ログインボタン:id="wp-submit"のinput要素
でした。
欲しい要素にはすべてidがついているので助かりますね。idはそのドキュメント内で一つしかありませんので、取得するのが簡単なのです。
input要素の入力とクリック
input要素は、HTMLInputElementオブジェクトで表されます。
HTMLInputElementオブジェクトに値を入力する場合は、Valueプロパティを使用します。
「ログイン」ボタンもinput要素ですので、HTMLInputElementオブジェクトです。
HTMLInputElementオブジェクトをクリックする場合は、Clickメソッドでしたね。
プログラムとしてはこちらです。
Sub MySub()
Dim objIE As InternetExplorer
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.Navigate "https://example.com/wp-login.php" '管理画面ページのURLを指定
Wait objIE
Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.Document
With htmlDoc
.getElementById("user_login").Value = "XXXXXX" 'ユーザー名を指定
.getElementById("user_pass").Value = "XXXXXXXX" 'パスワードを指定
.getElementById("wp-submit").Click
End With
End Sub
ユーザー名、パスワードを適正に入力した上で、プログラムを実行しますと、無事にWordPress管理画面にログインできるはずです。
まとめ
エクセルVBAでIEを操作してフォームにユーザー名とパスワードを入力してログインをする方法をお伝えしました。
サイトによってform要素やinput要素の取得の仕方が変わるので、都度検証をする必要がありますが、エッセンスとしてはあちこちで使えると思います。
どうぞご活用下さい!
また色々なIE操作についてお伝えできればと思いますので、どうぞお楽しみに!
連載目次:エクセルVBAでIEを操作してWEBスクレイピング
IEを操作してWEBページのデータを取得して、エクセルのデータとして取り込む、つまりWEBスクレイピングをエクセルVBAで実現します。各種WEBページを課題として様々なデータの取得の仕方を解説していきたいと思います。
- 【エクセルVBAでIE操作】10分で終わるセッティングとWEBページの閲覧確認
- 【エクセルVBAでIE操作】HTMLタグと要素そしてドキュメントの取得
- 【エクセルVBAでIE操作】ブラウザの読み込み待ちをしないとダメなのです
- 【エクセルVBAでIE操作】ページ内のリンク先URLを全部取得する
- 【エクセルVBAでIE操作】ディスクリプションなどの要素をname属性でGetする
- 【エクセルVBAでIE操作】hタグなどの要素をタグ名でGetする
- 【エクセルVBAでIE操作】WEBページのテーブル要素を自動で取得する方法
- 【エクセルVBAでIE操作】WEBページのテーブル要素からセルのデータを取り出す方法
- 【エクセルVBAでIE操作】IEで検索窓にキーワードを入力して送信する方法
- 【エクセルVBAでIE操作】検索結果一覧から記事タイトルを取得する方法
- 【エクセルVBAでIE操作】ブログの記事一覧ページから公開日とカテゴリを取得する
- 【エクセルVBAでIE操作】ページャーをめくって複数ページからデータを取得する
- 【エクセルVBAでIE操作】ユーザー名とパスワードを入力してログインをする
- 【エクセルVBAでIE操作】name属性を利用して画像ボタンをクリックする
- 【エクセルVBAでIE操作】alt属性・src属性を利用して画像ボタンをクリックする
コメント
WEBスクレイピング全12回の記事をすべて読ませて頂きました。
とても分かりやすくて参考になりました!
一応報告ですが
「いつも隣に~」のページをサンプルにした記事は、記事上のタグと現在のHTMLタグに差が発生しているようです。
でも、それでかえって「では自分でやってみよう」となってより勉強になりました。
このままのほうがいいかも知れませんw
とても役に立つ記事、ありがとうございましたm(__)m
通りすがりの山田君さん
コメントありがとうございます!
確かに…!
おっしゃる通りですね。
…修正しないといけませんね。
ご指摘ありがとうございます。
今後ともどうぞよろしくお願いいたします!
いつも参考にしております。
ログイン後のデータ取得について、GASの記事が是非読みたいです!
ご検討の程宜しくお願い致します。
磯垣さん
コメントありがとうございます。
検討させていただきます!
期待しすぎずにお待ちくださいませ…!