VBSでIEを操作する。
選択可能なボタンを連続的にクリックし、リンク先での処理を行う。
但しボタンはクリック可能なものと不可能なものが存在し、
且つリンク先は別ウインドウで開くと遷移エラーとなるのでシングルで処理する必要がある場合の処理。
Dim IE 'IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "URL" '
'開くまで待つ。ページ遷移の際はお約束
Do While IE.Busy = True Or IE.readyState <> 4
Loop
'###################
'ここに処理を記述
'選択可能なボタンをクリックして連続的にクリック先画面に遷移する
'但し、クリック可能なものとクリックが不可能なものが存在し、
'且つクリック先を別窓で開こうとすると遷移エラーとなる場合の処理
'選択不可なボタン
'<td class="text6">
' <div class="textAlign">
' <img alt="選択する" src="../img/common/dummy_syoukai4.png"></div></td>
'選択可能なボタン
'<td class="text6">
' <div class="textAlign"><a tabindex="106" href="../../yh2p/scb/PYHW0210.seam?index=2&ETRFLG=1&SDP=1">
' <img class="rollover" alt="選択する" src="../img/common/dummy_syoukai2.PNG"></a></div></td>
'方針
'Class="test6"の各オブジェクトについて以下を処理する
'<a>タグを持っている→クリック
'<を持っていない>→スルー
'課題
' 一つの契約紹介をして画面を戻し、次のループに入ってくると、
' "myTag = myTarget.outerHTML" が失敗する。
' 一度別の画面に遷移してしまっているので、
' "ie.document.getElementsByClassName("text6")"の内容が破棄されているため。
'
' 1.For Each ~ Next でループカウンタを用い、紹介するリンクボタンのindexをとる。
' 2.indexを格納した配列について以下処理
' ・ie.document.getElementsByClassName("text6")を添え字付きでアクセスし、
' リンク先をクリック。
' ・待機処理
' ・リンク先処理
'
' ポイントは リンク先処理でちゃんと元のページに戻ってくる事と
' リンクへアクセスする際、つどオブジェクトに1回ごとに指定しなおす、という所。
dim myTarget
dim myTag
dim myArray()
dim iCnt
iCnt = 0
Redim Preserve myArray(iCnt)
for Each myTarget in ie.document.getElementsByClassName("text6") 'クラス名でコレクションを得る
myTag = myTarget.outerHTML
Redim Preserve myArray(iCnt)
If Instr(myTag, "href=") > 0 then 'クラスのHTMLに"href="が含まれるかチェック
myArray(iCnt) = True '含まれる場合、フラグを立てる
Else
myArray(iCnt) = False
End If
iCnt = iCnt + 1
Next
'配列のフラグをチェックして、Trueのものについてはクリックして画面を遷移させる。
'ポイントは改めて getElementsByClassName コレクションを添え字付きで呼び出しているところ。
For iCnt = 0 To Ubound(myArray)
If myArray(iCnt) Then
ie.document.getElementsByClassName("text6")(iCnt).getElementsByTagName("a")(0).click
Do While ie.Busy = True Or ie.readyState <> 4
Loop
'###################
'リンク先処理を記述
'からなずリンク元に戻るように記述する事
'###################
End If
Next
'###################
IE.Quit 'IE終了
Set IE = Nothing '開放
選択可能なボタンを連続的にクリックし、リンク先での処理を行う。
但しボタンはクリック可能なものと不可能なものが存在し、
且つリンク先は別ウインドウで開くと遷移エラーとなるのでシングルで処理する必要がある場合の処理。
Dim IE 'IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "URL" '
'開くまで待つ。ページ遷移の際はお約束
Do While IE.Busy = True Or IE.readyState <> 4
Loop
'###################
'ここに処理を記述
'選択可能なボタンをクリックして連続的にクリック先画面に遷移する
'但し、クリック可能なものとクリックが不可能なものが存在し、
'且つクリック先を別窓で開こうとすると遷移エラーとなる場合の処理
'選択不可なボタン
'<td class="text6">
' <div class="textAlign">
' <img alt="選択する" src="../img/common/dummy_syoukai4.png"></div></td>
'選択可能なボタン
'<td class="text6">
' <div class="textAlign"><a tabindex="106" href="../../yh2p/scb/PYHW0210.seam?index=2&ETRFLG=1&SDP=1">
' <img class="rollover" alt="選択する" src="../img/common/dummy_syoukai2.PNG"></a></div></td>
'方針
'Class="test6"の各オブジェクトについて以下を処理する
'<a>タグを持っている→クリック
'<を持っていない>→スルー
'課題
' 一つの契約紹介をして画面を戻し、次のループに入ってくると、
' "myTag = myTarget.outerHTML" が失敗する。
' 一度別の画面に遷移してしまっているので、
' "ie.document.getElementsByClassName("text6")"の内容が破棄されているため。
'
' 1.For Each ~ Next でループカウンタを用い、紹介するリンクボタンのindexをとる。
' 2.indexを格納した配列について以下処理
' ・ie.document.getElementsByClassName("text6")を添え字付きでアクセスし、
' リンク先をクリック。
' ・待機処理
' ・リンク先処理
'
' ポイントは リンク先処理でちゃんと元のページに戻ってくる事と
' リンクへアクセスする際、つどオブジェクトに1回ごとに指定しなおす、という所。
dim myTarget
dim myTag
dim myArray()
dim iCnt
iCnt = 0
Redim Preserve myArray(iCnt)
for Each myTarget in ie.document.getElementsByClassName("text6") 'クラス名でコレクションを得る
myTag = myTarget.outerHTML
Redim Preserve myArray(iCnt)
If Instr(myTag, "href=") > 0 then 'クラスのHTMLに"href="が含まれるかチェック
myArray(iCnt) = True '含まれる場合、フラグを立てる
Else
myArray(iCnt) = False
End If
iCnt = iCnt + 1
Next
'配列のフラグをチェックして、Trueのものについてはクリックして画面を遷移させる。
'ポイントは改めて getElementsByClassName コレクションを添え字付きで呼び出しているところ。
For iCnt = 0 To Ubound(myArray)
If myArray(iCnt) Then
ie.document.getElementsByClassName("text6")(iCnt).getElementsByTagName("a")(0).click
Do While ie.Busy = True Or ie.readyState <> 4
Loop
'###################
'リンク先処理を記述
'からなずリンク元に戻るように記述する事
'###################
End If
Next
'###################
IE.Quit 'IE終了
Set IE = Nothing '開放
コメント
コメントを投稿