2017-02-03 11 views
0

IEのVBAからHTMLドロップダウンメニューをクリックしようとしています。今は、実際にSendkeys "{Tab}"を21回以上使用して要素にアクセスし、次にSendkeys "{Enter}"を押してドロップダウンを取得します。明らかに、これは恐ろしいソリューションですが、私はここでVBA - HTML要素のクリック

を動作するように何かを得るように見えることはできません、私はクリックする要素のHTMLコードです:

<tr> 
<td height='21'></td> 
<td colspan='5' valign='top' align='left'> 
<DIV id='win0div$ICField28$0'><table cellpadding='0' cellspacing='0' cols='1' class = ' ' id='$ICField28$scrolli$0' width='948'> 
<tr><td><DIV id='win0divGP$ICField28$0'><table cellspacing='0' cellpadding='0' border='0' width = '100%' class='PSLEVEL1SCROLLAREAHEADER' style = 'border:0'><tr><td class='PSLEVEL1SCROLLAREAHEADER' align='left' id = 'PSCENTER'><table class='PSRIGHTCORNER' cellspacing='0' cellpadding='0' border='0' style ='height:100%;' width='100%' ><tr><td class='PSLEVEL1SCROLLAREAHEADER PSLEFTCORNER' style = 'border:0;padding-left:0px;' align='left' ><a name='$ICField28$expand$0' id='$ICField28$expand$0' tabindex='71' href="javascript:submitAction_win0(document.win0,'$ICField28$expand$0');"><img src='/cs/fsprd/cache/PT_EXPAND_1.gif' alt='Expand section Prepayment Penalty' title='Expand section' border='0' /></a>&nbsp;Prepayment Penalty&nbsp;</td> 
</tr></table></td></tr></table></DIV></td></tr> 

私は多くのをやってみましたHTML要素をクリックするもの:

Dim IE as object 
Set IE = CreateObject("InternetExplorer.Application") 
IE.document.getelementsbytagname("img")(0).click 

しかし運がありませんでした。

誰も私がこのドロップダウンをクリックするために何ができるか考えていますか?より多くの情報を提供できるかどうか教えてください。これも試してみてください

Dim IE As Object 
Dim img As HTMLImg 
Dim i As Integer 
Set IE = CreateObject("internetexplorer.application") 

IE.navigate "yourwebsite" 

Set HTMLdoc = IE.Document 
Set img = Nothing 
i = 0 
While i < HTMLdoc.images.Length And img Is Nothing 
    If HTMLdoc.images(i).alt = "Expand section Prepayment Penalty" Then Set img = HTMLdoc.images(i) 
    i = i + 1 
Wend 

If Not img Is Nothing Then 
    img.parentElement.Focus 
    img.parentElement.click 
Else 
    MsgBox "Image title not found" 
End If 

:ここ

Dim IE As Object 
Dim i As Integer 
Set IE = CreateObject("internetexplorer.application") 

IE.navigate "yourwebsite" 

Set HTMLdoc = IE.Document 

For each l in HTMLdoc.getElementsByTagName("a") 
    If l.ClassName = "PSLEVEL1SCROLLAREAHEADER PSLEFTCORNER" Then 
     l.Click 
     Exit For 
    End if 
Next 

答えて

0

はこれを試してみてください。基本的には、imgタグのコレクションを作成し、そこからそれぞれがsrcと一致するかどうかを調べます。 「HTMLDOC = IE.Document設定」

私は、実行時エラー91がライン上で「変数またはWithブロック変数がオブジェクト設定されていません」を取得
Option Explicit 

Sub findElementBySrc() 
    Dim IE   As Object 
    Dim element  As Object 
    Dim elements As Object 

    Set IE = CreateObject("InternetExplorer.Application") 

    'Find all the img Tags, this is in a collection 
    Set elements = IE.document.getElementsByTagName("img") 

    'iterate over the collection to find an item - 
    'that matches the src property 
    For Each element In elements 
     On Error Resume Next ' to skip over elements without a src property 
     If element.src = "/cs/fsprd/cache/PT_EXPAND_1.gif" Then 
      element.Focus 
      element.Click 
      'element.FireEvent ("OnClick") 'commented out, sometimes needed 
      Exit For 
     End If 
    Next 

    Set IE = Nothing 
End Sub 
+0

は、私が参照または何かにロードする必要があり、特定のライブラリはありますか? – Tollbooth

+1

更新された投稿を試してください。 Microsoft HTML Object Libraryへの参照を設定してください。 –

+1

コメント 'Dim HTMLdocとしてMSHTML.HTMLDocument –

0

は別のアプローチである

+0

これは理にかなっていますが、なんらかの理由でうまくいかない... Ugh – Tollbooth

+1

HTMLが必要な場合があります。おそらく要素がフレームなどにあります。ページコードを見ずに言うのは難しいでしょう。 –

+0

私は、要素がフレーム内にあることをほぼ保証することができます。そのような場合に私はどのようにそれを捉えますか?コードを試してみます – Tollbooth