時間外でログイン画面が出ていない時のエラー処理
.getElementsByName("id or name") で オブジェクトを取得すると、
.Length で 取得したオブジェクト(エレメント)の数がわかるので、
下記のようにして、チェックしてみました。
'INET-ID(name=inetid)にセットする。 Set objINETID = objIE.Document.getElementsByName("inetid") '変数に一度セットする If objINETID.Length = 0 Then '.Lengthで 取得したエレメントの数がわかります '終了処理/エラー処理 0の時は見つからなかったので Msgbox "時間外です。 時間と表示されている場所を確認してください" WScript.Quit 'スクリプトを途中で抜ける End If objINETID(0).Value = "Ken3 TEST" 'データをセットする
.getElementsByNameで一度変数に入れる
直接objIE.Document.getElementsByName("名前")(0).Value = "値 XXXXX"
みたいに使用しないで、
Set 変数 = objIE.Document.getElementsByName("名前")
で、一度変数にセットする。
Set objINETID = objIE.Document.getElementsByName("inetid") '変数に一度セットする
.Lengthで 取得したエレメントの数 結果を調べ、判断する
.Lengthで数がわかるので、
If objINETID.Length = 0 Then
みたいに、チェック可能となる。
実際の値を入れる時は 変数(0) などで
実際に値をセットしたり、使う時は、
objIE.Document.getElementsByName("inetid")(0).Value = "S999999PC"
ともう一度書いてもいいのですが、
せっかく変数に入れたので、
objINETID(0).Value = "S999999PC" 'データをセットする
と、(0)を使用して、値をセットします。
処理を追加したソース
test.vbs
Dim objIE '変数を定義します。 Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。 objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 objIE.Navigate "http://www.google.co.jp/" 'ページの表示完了を待ちます。 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。 WScript.Sleep 100 '0.1秒待つ 1000で1秒 Wend 'INET-ID(name=inetid)にセットする。 Set objINETID = objIE.Document.getElementsByName("inetid") '変数に一度セットする If objINETID.Length = 0 Then '.Lengthで 取得したエレメントの数がわかります '終了処理/エラー処理 0の時は見つからなかったので Msgbox "時間外です。 時間と表示されている場所を確認してください" WScript.Quit 'スクリプトを途中で抜ける End If objINETID(0).Value = "Ken3 TEST" 'データをセットする 'ログインボタンを探して押す 'Aのタグを集める Set objA = objIE.Document.getElementsByTagName("A") 'ループで頭からタイトルがログインを探す For n = 0 To objA.Length - 1 If objA(n).Title = "ログイン" then objA(n).Click '見つけたAタグのオブジェクトをクリック Exit For End If Next
↑、あっ、あらためて説明しないでも、
.getElementsByTagName("A")
で、前回から使っていたか(笑)
試行錯誤の動画
いつもの試行錯誤のテスト動画です。 http://www.youtube.com/watch?v=oI3R2h7GGS4
www.youtube.com