現在 objIE.document (Document.Forms)を使用して、フォームにデータを入力し、ページにログインしようと考えています。
ログインしようと考えているのはヤフオクのページで
https://login.yahoo.co.jp/config/login?.src=auc&.intl=jp&.pd=&.partner=&.protoctl=&.done=http%3A//auctions.yahoo.co.jp/jp
になります。
objIE.document.all.login.Value = "自分のID"
objIE.document.all.passwd.Value = "自分のPW"
objIE.document.all.login_form.Click
として、ログインしようとしたのですが、出来ませんでした。
多分、問題はSubmitの所のnameがわからない為、ボタンを押すことが出来ないようになっているからだと思うのですが、
お手数をおかけしますが、ヤフオクのログインページでIDとPWを入力した後のログインボタン処理をするにはどうすればいいかを知っている方おりましたらご回答いただけないでしょうか?
お手数をおかけしますがよろしくお願いいたします。
再回答ですみません。
最初の回答はめんどくさいのと好みで型指定なしとしましたが、
できれば参照設定から、
「Microsoft Internet Controls」と
「Microsoft HTML Object Library」
をチェックして、
型指定で開発しることをお勧めします。
理由は、objIE.
とかしたときに、インテリセンス(入力候補)が機能し、スペルミスを防止できたり、
そのオブジェクトがどのようなメソッド、プロパティを持っているか知ることが
できるからです。
Option Explicit Dim objIE As InternetExplorer Const READYSTATE_COMPLETE = 4 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub LoginTest() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate2 "https://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp&.src=auc&.done=http://auctions.yahoo.co.jp/jp" While objIE.ReadyState <> READYSTATE_COMPLETE Or objIE.Busy = True Sleep 200 Wend Dim objDoc As HTMLDocument Set objDoc = objIE.Document 'ドキュメントのオブジェクトに一旦入れてみたり、 objDoc.getElementById("username").Value = "xxxxxx" Dim pwd As HTMLInputElement Set pwd = objDoc.getElementById("passwd") 'INPUT要素のオブジェクトに入れてみたり、 pwd.Value = "zzzzzzz" objDoc.login_form.submit Set pwd = Nothing Set objDoc = Nothing End Sub
ボタンを押さなくても、フォームをサブミットさせればできそうです。
objIE.document.login_form.Submit
Option Explicit Const READYSTATE_COMPLETE = 4 Dim objIE Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub LoginTest() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate2 "https://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp&.src=auc&.done=http://auctions.yahoo.co.jp/jp" While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True Sleep 200 Wend objIE.document.getElementById("username").Value = "xxxxxxxxxxx" objIE.document.getElementById("passwd").Value = "zzzzzzzzzzzz" objIE.document.login_form.Submit End Sub
Sub ie_test() 'IEの表示をテストする。
'IEの起動
Dim objIE As Object '変数を定義します。
Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
objIE.Visible = True '可視、Trueで見えるようにします。
'表示位置(左上の座標)とサイズ(高さ・幅)を調整する
objIE.FullScreen = False '※Trueのモードだとびっくりするよ
objIE.Top = 100 '左上 上位置
objIE.Left = 100 '左上 左位置
objIE.Width = 800 '横幅
objIE.Height = 600 '高さ
'XXXバー、外観・外枠の調整。
objIE.Toolbar = True 'タブの切り替えで必要なので、ツールバーを表示にする
objIE.MenuBar = False 'メニューは非表示にする
objIE.AddressBar = True 'URLなど アドレスバーは確認のため、表示する
objIE.StatusBar = True '一番下のステータスバーを表示。
'処理したいページを表示します。
objIE.Navigate "https://login.yahoo.co.jp/config/login?.lg=jp&.intl=jp&.src=auc&.done=http://auctions.yahoo.co.jp/jp" '.Navigate メソッドで Yahooを表示する。
'Navigate と Navigate2 の 違いが私もイマイチわかってませんが
'ページの表示完了を待ちます。
While objIE.ReadyState <> READYSTATE_COMPLETE Or objIE.Busy = True '.ReadyState <> 4の間まわる。
DoEvents '重いので嫌いな人居るけど。
Wend
'ページが表示されたので、表示された文章に対して、処理を行います。
objIE.document.all.login.Value = "ID"
objIE.document.all.passwd.Value = "PW"
objIE.document.all.login_form.Click
End Sub
<tr class="yjid">
<td><label for="username" class="yjM">Yahoo! JAPAN ID:</label><br />
<input name="login" id="username" value="" class="yreg_ipt yjM" type="text"></td>
</tr>
<tr class="yjpw yjM">
<td><label for="passwd" class="yjM">パスワード:</label><br />
<input name="passwd" id="passwd" value="" class="yreg_ipt yjM" type="password"></td>
</tr>
のnameを参考にしました。
<legend>ログインフォーム</legend>
<form method="post" action="https://login.yahoo.co.jp/config/login?" autocomplete="off" name="login_form">
を参考にしたのですが、うまく出来ません。。
クリック設定のみ間違えているとは思うのですが、具体的な name がないため、困っております。。
フォームをクリックするのに通常とは違うフォーム設定がヤフー側でされているような気がします。。
わからないです。。
お手数をおかけしますが、わかるかたおりましたらよろしくお願いいたします。