- 締切済み
エクセルマクロでIE(java?のページ)を操作したい
エクセルマクロでIEを操作させたいのですが、 javaで書かれていると思われるページの項目をクリックさせることが出来ません。 いろいろネットを調べたつもりなのですが出来ないため、アドバイスよろしくお願いします。 環境:WinXP,IE6,EXCEL2003 あるURL(公開されていません)を読み込むと出てくる最初のログイン画面では、 ソースを見て、下記エクセルマクロでログインまでは可能でした。 Sub ログイン() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://○○○/Servlet" Do While objIE.Busy = True DoEvents Loop Do While objIE.ReadyState <> 4 DoEvents Loop objIE.document.forms(0).Item("id").Value = "xxxxxx" objIE.document.forms(0).Item("pass").Value = "yyyyyy" objIE.document.forms(0).submit '送信処理 Do While objIE.Busy = True DoEvents Loop Do While objIE.ReadyState <> 4 DoEvents Loop 'ここのクリックが出来ません objIE.document.forms(0).Item("NewData").Click End Sub ログイン後、左右分割フレームのページが表示されます。 左:メニュー、右:情報表示エリアです。 (ログイン後はjava?でフレームページを開いているようです。 ソースにフレームで開いているような記載が見当たりません) 左メニューのソース(加工してあり動作しません)は下記です。 <HTML> <HEAD> <TITLE>情報表示</TITLE> <LINK rel=stylesheet type=text/css href='http://○○○/txt.css'> <LINK rel='SHORTCUT ICON' href='http://○○○/txt.ico'> <SCRIPT language=JavaScript src='http://○○○/txt2.js'></SCRIPT> </HEAD> <BODY> <FORM action='' method=POST target='CONTENTS' name=servletAct> <INPUT type=hidden name=code value='12345'> </FORM> <SPAN ID=list2 onClick=showlist(this,'menu2')>+</SPAN><SPAN onClick=showlist(list2,'menu2') style='nowrap:true'>項目A(親)</SPAN> </FONT></B><BR> <DIV ID=menu2 STYLE='display:none;margin-top:0em;'> <TABLE style='font-size:3.0mm;'> <TR> <TD nowrap width=15 align=right><IMG src=http://○○○/bl.gif></TD> <TD nowrap><A href=javascript:document.NewData.submit()>項目A-1(子)</A></TD> </TR> <FORM action=http://△△△/CallServlet method=GET target=CONTENTS name=NewData> <INPUT type=hidden name=url value='http://△△△/PTServlet'> <INPUT type=hidden name=Para1 value='NEW'> <INPUT type=hidden name=Para2 value=''> </FORM> </TABLE> </DIV> </BODY> </HTML> 項目A(親)をクリックすると項目A-1(子)が表示されます。(折りたたみメニュー?) 項目A-1(子)をクリックするとフレームの右:情報表示エリアに情報が表示されます。 エクセルマクロで、項目A(親)をクリック、項目A-1(子)をクリックをやりたいです。 (ダイレクトに項目A-1(子)でもいい) objIE.document.forms(0).Item("NewData").Clickでは出来ませんでした。 (オブジェクト変数またはWithブロック変数が設定されていませんのエラー) アドバイスよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 java でなくて、JavaScript で、似ていて非なるものですね。(^^; ご質問は、そのログを取れる人しか分からないので、ずばりの解答は出来ませんが、アドバイスとしては、 objIE.document.forms(0).Item("NewData").Click 必ずしも、Item に名称が入っているとは限りません。 タグの一覧を出して、それで探します。 だいたいは、 objIE.document.forms(0).Item(*).Click *の部分は数字になることが多いようです。 例えば、以下のようにして、空のシートに、タグなどを出して探すしかないと思います。順序を見ていけば、これしかないというところが出てきます。 例: On Error Resum Next With objIE For Each k In .Document.all.forms(0) i = i + 1 Cells(i + 1, 1).Value = k.sourceindex If Err.Number = 0 Then Cells(i + 1, 2).Value = k.Type Cells(i + 1, 3).Value = k.tagNAME Err.Clear End If Next k End With On Error Goto 0
補足
ありがとうございます。 頂いたコードを試してみましたが、セルに出力されないためフレームページの影響かページのソースが特殊なのかもしれません。 他に、 For i = 0 To 139 objIE.document.all(i).Click Next のようにして、0~総辺りで試してみましたがダメでした。 #140で、オブジェクト変数またはWithブロック変数が設定されていませんのエラー 引き続きアドバイス募集しておりますのでお願いします。