2017-03-25 1 views
0

나는 HTML 테이블에있는 이미지를 클릭하는 VBA 코드를 작성하려고 노력해 왔습니다. 내가 클릭하려고하는 이미지에는 소스 코드 만 있습니다.VBA를 클릭하여 html 테이블에 넣은 이미지

나는 이미지를 클릭하는 데 4 가지 방법을 시도했지만이 중 아무 것도 작동하지 않았습니다. 누구든지 VBA 코드를 작성하는 방법을 도울 수 있습니까?

1.

Dim HTMLDoc As Object 
Set HTMLDoc = IE.document 

Dim ElementCol As Object 
Set ElementCol = HTMLDoc.getElementsByTagName("td") 
For Each link In ElementCol 
    If link.innerHTML = "excel.jpg" Then 
     link.Click 
     Exit For 
    End If 
Next link 

2.

Dim HTMLDoc As Object 
Set HTMLDoc = IE.document 

Dim i As Object 
For Each i In HTMLDoc.images 
    If i.src = "../images/excel.jpg" Then 
     i.Click 
    Exit for 
    End If 
Next i 

3.

Dim HTMLDoc As Object 
Set HTMLDoc = IE.document 

Dim img As Object 
For Each img In HTMLDoc.all 
    If img.innerHTML = "excel.jpg" Then 
     img.Click 
     Exit For 
    End If 
Next img 

4.

Dim HTMLDoc As Object 
Set HTMLDoc = site.document 

Dim tdCollection As Object 
Set tdCollection = HTMLDoc.all 
    For Each cell In tdCollection 
     If cell.ID = "singleXLS" Then 
      cell.Click 
      Exit Sub 
     End If 
    Next 

그는 re는 HTML 코드입니다.

제안으로
<tbody><tr> 

<td id="singleXLS" onclick="javascript:gCognosViewer.getRV().viewReport('spreadsheetML');" return="" true;"="" style="cursor:hand;" valign="middle" align="center"> 
<img src="../images/excel.jpg" border="0"></td> 

<td>&nbsp;</td> 

, 여기 내가 사용하고있는 코드입니다.

Sub click_img() 
    Dim URL As String 
    Dim HTMLDoc As Object 
    Set site = CreateObject("internetexplorer.application") 
    URL = Range("B2").Value 'There is an URL in cell B2 

    site.navigate URL 
    site.Visible = True 

    While site.busy 
     Wend 
    Do Until site.readyState = 4 
     DoEvents 
    Loop 


    Set HTMLDoc = site.Document 
    HTMLDoc.getElementById("singleXLS").getElementsByTagName("img")(0).Click 'Error is here 
End Sub 
+1

HTMLDoc.getElementbyId을 핀 도움이 될 것입니다 (" singleXLS "). getElementsbyTagName ("img ") (0). 클릭 –

+0

빠른 응답 Tim을 보내 주셔서 감사합니다. 나는 이것을 시도했다. 하지만 런타임 오류 424 가져 오는 중 : 개체 필요합니다. 도와 주실 수 있겠습니까? – Prakash

+0

내가 게시 한 코드는 귀하가 제공 한 HTML을 사용해야합니다. 현재 코드를 게시하는 데 도움이 될 것입니다. –

답변

0
이 대신

:

Set HTMLDoc = site.Document 
HTMLDoc.getElementById("singleXLS").getElementsByTagName("img")(0).Click 

시도 :

Dim s, i 

Set HTMLDoc = site.Document 
Set s = HTMLDoc.getElementById("singleXLS") 
If Not s Is Nothing Then 
    Set i = s.getElementsByTagName("img")(0) 
    If Not i Is Nothing Then 
     i.Click 
    Else  
     Debug.Print "Img not found!" 
    End If 
Else 
    Debug.Print "singleXLX not found!" 
End If 

더 많은 코드, 그러나 당신이 정확한 문제

+0

Thanks Tim .... 이제 런타임 오류가 발생합니다. 13 : 형식이 일치하지 않습니다. Set s = HTMLDoc.getElementById ("singleXLS"). 나는이 코드를 여러 날 동안 실행하려고 노력해 왔지만, 매번 다른 에러가 생길 수는 없었습니다. 다른 방법으로 이미지를 클릭 할 수 있습니까 (예 : fireevent Onlcick)? – Prakash

+0

테스트 할 URL이 없으면 문제가 무엇인지 알기가 어렵습니다. 내 코드를 게시 된 것과 똑같이 사용하고 있습니까? –

+0

죄송합니다 Tim, 공유 URL은 사용자 ID와 로그온이 필요하므로 도움이되지 않습니다. 그리고 그것을 공유하는 것은 위반이 될 것입니다. 예, 코드를 게시 된 것과 똑같이 사용했습니다. 여전히 오류가 발생합니다. 내 엑셀 VBA에 무슨 문제가 있는지 모르겠다. – Prakash

관련 문제