LoginSignup
11
18

More than 5 years have passed since last update.

ExcelVBAでIEからユーザID・パスワードを入力してログインする

Last updated at Posted at 2018-02-22

image.png

Excelにこんな感じでユーザ名/パスワードが書いていて、
ログインボタンでIEからconnpassにログインするVBAを作成しました。

※シート名は「ログイン情報」

完成版VBAソースコード

作ったVBAは以下の通り


Sub login()

 Dim objIE As InternetExplorer 'IEオブジェクトを準備
 Set objIE = CreateObject("Internetexplorer.Application") '新しいIEオブジェクトを作成してセット

 objIE.Visible = True 'IEを表示

 Dim strUrl As String '次ページのURL
 strUrl = "https://connpass.com/login/"

 objIE.navigate strUrl 'IEでURLを開く

 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち

     DoEvents

 Loop


 Dim strUsername As String
 strUsername = Worksheets("ログイン情報").Range("C3").Value

 Dim strPassword As String
 strPassword = Worksheets("ログイン情報").Range("C4").Value

 Dim htmlDoc As HTMLDocument 'HTMLドキュメントオブジェクトを準備
 Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット

 htmlDoc.getElementsByName("username")(0).Value = strUsername 'name="username"にユーザー名を入力
 htmlDoc.getElementsByName("password")(0).Value = strPassword  'name="password"にパスワードを入力
 htmlDoc.getElementById("login_form").submit  'フォームの内容を送信


End Sub

対象のHTMLは以下の通り


<form action="/login/" method="post" id="login_form">
        <h3 class="main_h3">connpassアカウントでログイン</h3>



        <p class="em mb_smallest">ユーザー名、またはメールアドレス</p>
        <p class="p text_center">
          <input name="username" class="gray_form" type="text" value="">
        </p>

        <p class="em mb_smallest">パスワード</p>
        <p class="p text_center">
          <input name="password" class="gray_form" type="password">
        </p>

        <p class="p text_center"><button class="btn btn_default" type="submit">ログインする</button></p>
        <input type="hidden" name="csrfmiddlewaretoken" value="g638HlpAm1I3B7qA9zSv8YpuYU8Tb6HE">
      </form>

ソースコード参考にしたサイトはこちら
【エクセルVBAでIE操作】ユーザー名とパスワードを入力してログインをする

↑上記サイトはgetElementByIdメソッドで取得していましたが、Idがなかったので以下を参考にgetElementsByNameメソッドで取得しました
VBAでIEのテキストボックスに値入力

エラーの備忘録

ユーザ定義型は定義されていません

コンパイルエラー
必要なライブラリが読み込めていないエラーのよう。それではじめはIEを開くことができませんでした。
対処策:コード実行を停止後、[ツール]-[参照設定]から必要なライブラリファイルにチェックを入れる

オブジェクトは、このプロパティまたはメソッドをサポートしていません

実行時エラー。
直訳すると、『そんなプロパティorメソッドなんてねーよw』とのことらしい。
よくよくみてみると、「getElementByName」になっていて、sが抜けていました。
対処策:プロパティとメソッド見直そう

感想

これはパスワードをそのままExcel上に直接書いているので、この前の記事のようにパスワードを伏字にした状態からパスワードを取得し、ログインできるようにしたい。
あとyahooメールのように、ユーザーID入力のあとパスワード入力の画面にうつるようなパターンでもログインできるようにしたい。

11
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
18