前提・実現したいこと
Excelにログインに必要な情報(IDとパスワード)を以下のようにセルとテキストボックスに記載して、特定のサイトにログインしたいと思っています。
参考にしたサイトは→ https://qiita.com/salmonosushi/items/5f57e8f70ec99b5fab32
![
※何故やろうとしたのかなどの事の経緯ほかについては以下の通り。
業務に必要なサイトへの自動ログインを定時で行いたい
↓
Excelで自動ログインのマクロを組み(ワークブック起動でマクロが実行されるようにした)、Windowsのタスクスケジューラでこのブックを定時に起動するように設定した
発生している問題・エラーメッセージ
ログイン画面で自動ログインをしたところ、ログインができないと弾かれる
↓
正しい8桁のパスワードをExcel側には入力していたにもかかわらず、ログインしようとしているサイトのパスワード入力欄に転記されたパスワードがなぜか9桁になっていた。転記された先でパスワードを編集しようとすると8桁になり、正しいパスワードが転記された状態になる。
該当のソースコード
VBA
1Sub auto_open() 2 3Dim objIE As InternetExplorer 'IEオブジェクトを準備 4Set objIE = New InternetExplorerMedium 5'新しいIEオブジェクトを作成してセット 6 7objIE.Visible = True 'IEを表示 8 9Dim strUrl As String '次ページのURL 10strUrl = "http://www.hogehoge.com" 11 12objIE.navigate strUrl 'IEでURLを開く 13 14Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち 15 16 DoEvents 17 18Loop 19 20Dim strUsername As String 21 strUsername = GetUsername 22 23Dim strPassword As String 24 strPassword = GetPassword 25 26Dim htmlDoc As HTMLDocument 'HTMLドキュメントオブジェクトを準備 27Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット 28 29htmlDoc.getElementById("username").Value = strUsername 30htmlDoc.getElementById("password").Value = strUserpassword 31htmlDoc.getElementById("submit").Click 'フォームの内容を送信 32 33 34End Sub 35 36Function GetUsername() As String 37 Dim ws As Worksheet 38 Set ws As Worksheets("ログイン情報") 39 40 Dim username As String 41 username = ws.Range("C3").Value 'ユーザー名を取得する 42 GetUsername = username 43 44End Function 45 46Function GetPassword() As String 47 Dim ws As Worksheet 48 Set ws As Worksheets("ログイン情報") 49 50 Dim password As String 51 If Range("C4").Value = "" Then 52 password = ws.OLEObjects("TextBox1").Object.Value 'パスワードをテキストボックスから取得する 53 Else 54 password = Range("C4").Value 'パスワードをセルから取得する 55 End If 56 GetPassword = password 57 58End Function
試したこと
別のサイトでも同事象が発生するか確認してみましたが、私がログインしたいサイトでのみ発生し、ほかのサイトでは発生しないようでした。
現状、ワークシートにログイン情報を入れるのではなく
VBA
1htmlDoc.getElementById("username").Value = "username" 2htmlDoc.getElementById("password").Value = "password" 3htmlDoc.getElementById("submit").Click 'フォームの内容を送信
とコードそのものにログイン情報を入れることで解決しております。この場合ですと、パスワードが正しく転記され、ログインされるようになっています。
何故テキストボックスを利用した場合、正しく転記されないのでしょうか?
特定のサイトでのみ発生している事象ですので、サイトの問題でしょうか?
回答2件
あなたの回答
tips
プレビュー