Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2076

【エクセルVBAでIE操作】ユーザー名とパスワードを入力してログインをする

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルVBAでInternet Explorerを操作する初心者向けのシリーズです。

節操なく色々なパターンを紹介しております。

前回は、ページャーを踏んで次々とページをクロールしていく方法についてお伝えしました。

【エクセルVBAでIE操作】ページャーを最後のページまでどんどんリンクする
エクセルVBAでIEを操作する初心者向けのシリーズです。今回はページャーを最後のページまで自動でクロールする方法とその見つけ方について解説をします。Webスクレイピングの効率が格段に上がりますよ!

今回はちょっと目線を変えまして、エクセルVBAでIEを操作してフォームにユーザー名とパスワードを入力してログインをする方法についてお伝えします。

おさらい:検索フォームにキーワードを入力して送信

以前こちらの記事で検索窓にキーワードを入力して送信する方法をお伝えしました。

【エクセルVBAでIE操作】IEで検索窓にキーワードを入力して送信する方法
初心者向けエクセルVBAでIEを操作するシリーズです。今回はIEを操作してWEBページ内の検索窓に任意のキーワードを入力して送信する方法をお伝えします。GoogleChromeの検証機能も活用しますよ!

ログインフォームへの値の入力と送信も基本的には同じ操作になりますので、おさらいとして、その際のプログラムを紹介します。

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

流れとしては

  1. InputBoxで検索するキーワードを入力
  2. サイトを開いてドキュメントを取得
  3. form要素と入力フォームのinput要素を取得
  4. 検索窓にキーワードを入力
  5. submitで送信

という流れです。

ログインの場合は、検索キーワードのかわりにユーザー名とパスワードを入力すればOKです。

エクセルVBAでIEを操作してWordPress管理画面にログインする

今回ログインするのは当サイトのWordPress管理画面です。

管理画面にログインするためには、ユーザー名とパスワードを入力して「ログイン」ボタンを押下します。

WordPressログイン画面

これをエクセルVBAでIEを操作して実行していきます。

Google Chromeの検証でformなどの要素を取得

エクセルVBAでのIE操作の超お助けツールであるGoogle Chromeの検証機能を使って、操作対象となるformタグやinputタグを見つけていきます。

ログイン画面を開いた状態で Ctrl + Shift+ Iですね。

開いた検証ウィンドウの左上「矢印マークのアイコン」をクリックした上で、フォームのあたりをクリックするとform要素を探しあててくれます。

Google Chromeの検証でフォーム要素を取得

form要素を選択した状態で右クリックをして「Copy」→「Copy outerHTML」とするとこの箇所のHTMLを取得することができます。

Google Chromeの検証でフォーム要素のouterHTMLをコピー

取得した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管理画面にログインした

このように無事にWordPress管理画面にログインできました。

まとめ

エクセルVBAでIEを操作してフォームにユーザー名とパスワードを入力してログインをする方法をお伝えしました。

サイトによってform要素やinput要素の取得の仕方が変わるので、都度検証をする必要がありますが、エッセンスとしてはあちこちで使えると思います。

どうぞご活用下さい!

また色々なIE操作についてお伝えできればと思いますので、どうぞお楽しみに!

連載目次:エクセルVBAをIEを操作してWEBスクレイピング

  1. 【エクセルVBAでIE操作】10分で終わるセッティングとWEBページの閲覧確認
  2. 【エクセルVBAでIE操作】HTMLタグと要素そしてドキュメントの取得
  3. 【エクセルVBAでIE操作】ブラウザの読み込み待ちをしないとダメなのです
  4. 【エクセルVBAでIE操作】ページ内のリンク先URLを全部取得する
  5. 【エクセルVBAでIE操作】ディスクリプションなどの要素をname属性でGetする
  6. 【エクセルVBAでIE操作】hタグなどの要素をタグ名でGetする
  7. 【エクセルVBAでIE操作】WEBページのテーブル要素を自動で取得する方法
  8. 【エクセルVBAでIE操作】IEで検索窓にキーワードを入力して送信する方法
  9. 【エクセルVBAでIE操作】ページをクロールしてブログの記事一覧を取得する方法
  10. 【エクセルVBAでIE操作】ブログの記事一覧ページから公開日とカテゴリを取得する
  11. 【エクセルVBAでIE操作】ページャーを最後のページまでどんどんリンクする
  12. 【エクセルVBAでIE操作】ユーザー名とパスワードを入力してログインをする

エクセル・VBAなどチャットでご相談に乗ります!

チャットで学ぶExcelVBAオンラインアドバイスチケット エクセルVBAに関する質問やお悩みにチャットでお答えする「月額プラン」提供中です!
詳しくはコチラ

Viewing all articles
Browse latest Browse all 2076

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>