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
初心者なので色々調べたのですがわかりませんでした。。。
お礼
vbhanatyanさん、あれこれお世話になりありがとうございます。 問題のページのソースを下に示しました。 そのページにはボタンがあり、それを押して目的とするページを表示させ印刷することを考えています。 よろしくお願いします。文字数の制限でソースの最後4行程カットしています。 <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> <META HTTP-EQUIV="Set-Cookie" CONTENT="NAMEMB=0;NAMESB=0;" > <TITLE>インターネットサービス</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function change(){ setTimeout( "change1()", 100 ); } function change1() { document.FORM_001_01.target = "menu1"; document.FORM_001_01.submit(); setTimeout( "change2()", 100 ); } function change2() { document.FORM_001_02.target = "out23"; document.FORM_001_02.submit(); } //--> </SCRIPT> </HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- document.write( "<FRAMESET ROWS=\"68,*\" FRAMEBORDER=0 BORDER=0 FRAMESPACING=0>" ); document.write( "<FRAME NORESIZE NAME=\"menu1\" SRC=\"./dcw11111.cgi?EVENT=DCWGA001-01&MMENUINF=01-0-02-0-03-0-04-0-05-0&DUMMY=20091221144755955228\" MARGINHEIGHT=0 MARGINWIDTH=0 SCROLLING=\"no\">" ); document.write( "<FRAME NORESIZE NAME=\"out23\" SRC=\"./dcw11111.cgi?EVENT=DCWGA091-02&DUMMY=20091221144755955253&I_LI2=20091221144336&C_LI2=&I_LO2=20091221144716&C_LO2=\" MARGINHEIGHT=0 MARGINWIDTH=0 SCROLLING=\"auto\">" ); document.write( "</FRAMESET>" ); //--> </SCRIPT> <BODY BGCOLOR="#FFFFFF"> <NOSCRIPT> <TABLE BORDER=0 WIDTH=600><TR><TD HEIGHT=50></TD></TR><TR><TD ALIGN="center"> <TABLE WIDTH="90%"><TR><TD><FONT SIZE=4 COLOR="#000000"><B> ご利用には<NOBR>JavaScript</NOBR>の設定が必要です。お使いのブラウザーの<NOBR>JavaScript</NOBR>の設定を有効にしてください。 </B></FONT></TD></TR></TABLE><BR><BR><BR><BR><FORM ACTION="/dcw177w.html"> <INPUT TYPE="submit" VALUE=" 閉じる " onClick="window.top.close()"></FORM>