
photo credit: VOLKSWAGEN: QUEL MILIONE BUTTATO IN PASSWORD DIMENTICATE via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
エクセルVBAでInternet Explorerを操作する初心者向けのシリーズです。
節操なく色々なパターンを紹介しております。
前回は、ページャーを踏んで次々とページをクロールしていく方法についてお伝えしました。
今回はちょっと目線を変えまして、エクセルVBAでIEを操作してフォームにユーザー名とパスワードを入力してログインをする方法についてお伝えします。
おさらい:検索フォームにキーワードを入力して送信
以前こちらの記事で検索窓にキーワードを入力して送信する方法をお伝えしました。
ログインフォームへの値の入力と送信も基本的には同じ操作になりますので、おさらいとして、その際のプログラムを紹介します。
Sub searchTonari() Dim strKeyword As String '検索文字列 strKeyword = InputBox("検索するキーワードを入力してください") Dim objIE As InternetExplorer 'IEオブジェクトを準備 Set objIE = CreateObject("Internetexplorer.Application") '新しいIEオブジェクトを作成してセット objIE.Visible = True 'IEを表示 objIE.navigate "http://tonari-it.com" 'IEでURLを開く Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち DoEvents Loop Dim htmlDoc As HTMLDocument 'HTMLドキュメントオブジェクトを準備 Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット Dim elForm As IHTMLElement, elPlaceholder As IHTMLElement 'IHTMLElementオブジェクトを準備 Set elForm = htmlDoc.getElementById("searchform") 'formをセット Set elPlaceholder = htmlDoc.getElementById("s") '検索窓をセット elPlaceholder.Value = strKeyword '検索窓にキーワードを入力 elForm.submit '送信 End Sub
流れとしては
- InputBoxで検索するキーワードを入力
- サイトを開いてドキュメントを取得
- form要素と入力フォームのinput要素を取得
- 検索窓にキーワードを入力
- submitで送信
という流れです。
ログインの場合は、検索キーワードのかわりにユーザー名とパスワードを入力すればOKです。
エクセルVBAでIEを操作してWordPress管理画面にログインする
今回ログインするのは当サイトのWordPress管理画面です。
管理画面にログインするためには、ユーザー名とパスワードを入力して「ログイン」ボタンを押下します。
これをエクセルVBAでIEを操作して実行していきます。
Google Chromeの検証でformなどの要素を取得
エクセルVBAでのIE操作の超お助けツールであるGoogle Chromeの検証機能を使って、操作対象となるformタグやinputタグを見つけていきます。
ログイン画面を開いた状態で Ctrl + Shift+ Iですね。
開いた検証ウィンドウの左上「矢印マークのアイコン」をクリックした上で、フォームのあたりをクリックするとform要素を探しあててくれます。
form要素を選択した状態で右クリックをして「Copy」→「Copy outerHTML」とするとこの箇所のHTMLを取得することができます。
取得したHTMLはこちらです。
<form name="loginform" id="loginform" action="http://tonari-it.com/wp-login.php" method="post"> <label for="user_login">ユーザー名<br> <input type="text" name="log" id="user_login" aria-describedby="login_error" class="input" value="" size="20"></label> </p> <label for="user_pass">パスワード<br> <input type="password" name="pwd" id="user_pass" aria-describedby="login_error" class="input" value="" size="20"></label> <p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever"> ログイン状態を保存する</label></p> <p class="submit"> <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="ログイン"> <input type="hidden" name="redirect_to" value="http://tonari-it.com/wp-admin/"> <input type="hidden" name="testcookie" value="1"> </p> </form>
欲しい要素にはすべてidがついているので助かりますね。idはそのドキュメント内で一つしかありませんので、取得するのが簡単なのです。
取得する要素は
- フォーム全体:id=”loginform”のform要素
- ユーザー名の入力フォーム:id=”user_login”のinput要素
- パスワードの入力フォーム:id=”user_pass”のinput要素
ですね。
フォームへの入力と送信
input要素に値を入力する場合は
input要素.Value=値
formの内容を送信する場合は
form要素.submit
とすればOKです。
プログラムとしてはこちらです。
Sub logIn() Dim objIE As InternetExplorer 'IEオブジェクトを準備 Set objIE = CreateObject("Internetexplorer.Application") '新しいIEオブジェクトを作成してセット objIE.Visible = True 'IEを表示 Dim strUrl As String '次ページのURL strUrl = "http://tonari-it.com/wp-login.php" objIE.navigate strUrl 'IEでURLを開く Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち DoEvents Loop Dim htmlDoc As HTMLDocument 'HTMLドキュメントオブジェクトを準備 Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット htmlDoc.getElementById("user_login").Value = "XXXXXXXX" 'id="user_login"にユーザー名を入力 htmlDoc.getElementById("user_pass").Value = "XXXXXXXXXX" 'id="user_pass"にパスワードを入力 htmlDoc.getElementById("loginform").submit 'フォームの内容を送信 End Sub
実行結果
以上のプログラムを実行しますと
このように無事にWordPress管理画面にログインできました。
まとめ
エクセルVBAでIEを操作してフォームにユーザー名とパスワードを入力してログインをする方法をお伝えしました。
サイトによってform要素やinput要素の取得の仕方が変わるので、都度検証をする必要がありますが、エッセンスとしてはあちこちで使えると思います。
どうぞご活用下さい!
また色々なIE操作についてお伝えできればと思いますので、どうぞお楽しみに!
連載目次:エクセルVBAをIEを操作して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操作】IEで検索窓にキーワードを入力して送信する方法
- 【エクセルVBAでIE操作】ページをクロールしてブログの記事一覧を取得する方法
- 【エクセルVBAでIE操作】ブログの記事一覧ページから公開日とカテゴリを取得する
- 【エクセルVBAでIE操作】ページャーを最後のページまでどんどんリンクする
- 【エクセルVBAでIE操作】ユーザー名とパスワードを入力してログインをする
エクセル・VBAなどチャットでご相談に乗ります!
