VBでのIE操作
VBでのIE操作をしようとして色々調べています。
色んなサイトを見ながら途中までは何とかできましたが、どうしてもリンク先を表示できません。
お分かりになる方いましたら、お力添えいただければ幸いです。
状況:
Excel2007使用 IE7 VB初心者です。
やりたい内容:
VBでIEを立ち上げる
↓
ページからリンクをクリックする
(ページ上に画像が貼り付けてあって、そこにURLくっついててハイパーリンクになっている。)
(セキュリティの関係でハイパーリンク先を初期で表示することはできない。)
↓
表示されたページに検索したい項目を入力
↓
結果をエクセルに反映する。
以上の作業をVBで組もうと思ってます。
よろしくお願いします。
Option Explicit
Sub ie_test()
'IEの起動
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
'処理したいページを表示します。
objIE.navigate "処理したいページ"
'ページの表示待ち
While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True
DoEvents
Wend
'開かれたIEを探す。
Dim objSHELL As Object
Dim objWINDOW As Object
Dim newIE As InternetExplorer
Dim wait_time As Date
Dim yCNT As Long
Dim i As Integer
'表示待ち
wait_time = DateAdd("s", 2, Now())
Do While Now() < wait_time
DoEvents
Loop
'リンクの貼ってある画像をクリック
For i = 0 To objIE.document.images.Length - 1
If InStr(objIE.document.images.Item(i).outerHTML, "image/btn131b1.gif") > 0 Then
objIE.document.images.Item(i).Click
End If
Next
'表示待ち
wait_time = DateAdd("s", 2, Now())
Do While Now() < wait_time
DoEvents
Loop
'シェルのオブジェクトを作成する
Set objSHELL = CreateObject("Shell.Application")
Set newIE = objSHELL.Windows(objSHELL.Windows.Count - 1)
Set objSHELL = Nothing
'新しいウィンドウのログインボタンを押す
Dim objINPUT As Object 'Inputタグ格納用
For Each objINPUT In newIE.document.all.tags("INPUT")
If objINPUT.Value = "ログイン" Then
objINPUT.Click
Exit For
End If
Next
'調べる項目
For yCNT = 3 To 1002 '
If Trim(Cells(yCNT, 1)) = "" Then Exit For 'A列が空白になったらループを抜ける
'ページが表示されたので処理を行います。
newIE.document.all("phone_no").Value = Cells(yCNT, 1) 'A列の文字を参照する
newIE.document.all("exec").Click
※ここでオブジェクト変数。。。のエラーが発生する※
'表示待ち
wait_time = DateAdd("s", 2, Now())
Do While Now() < wait_time
DoEvents
Loop
'表示されたウインドウからデータをセットする
Cells(yCNT, 2) = newIE.document.body.innerText '検索の結果をエクセルに反映
'新しいIEを閉じる
newIE.Quit
Set newIE = Nothing
'前のIEを閉じる
objIE.Quit
Set objIE = Nothing
Next yCNT
End Sub
初心者なので色々調べたのですがわかりませんでした。。。
お礼
内容をよく理解して、自作アプリにフィードバックし、完成度を上げたいと思います。 回答ありがとうございました。
補足
具体性に欠ける漠然とした質問内容にお答え頂きありがとうございます。 残骸(ゴミ)を残していたり、OSのリソースを握ったままで終了しているようなバグがないかを心配しています。 このアプリを何回も実行して、OSに不都合が起きないかをテストする方法も考えられます(何回実行するかが問題ですが)。また、アプリが正常終了出来ていれば是とするすることでも良いとは思っていますが。 ツールやOSの機能を使用して心配しているようなバグがないかを調査する方法があれば教えて頂ければ幸いです。