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入力のあとパスワード入力の画面にうつるようなパターンでもログインできるようにしたい。