IE getElementbyId 不工作

IE getElementbyId not working

我正在尝试单击网页上的 'a' 元素,但我无法找到它不起作用的原因。

这是我的 VBA 代码。

Function answer1(ie3 As InternetExplorer, str_anwer As String, answerid As String)

Dim ie4 As New InternetExplorer
Dim a As Object


Set ie4 = ie3


ie4.Document.getElementbyId("view=" & answerid).Click
ie4.Document.getElementbyId("reply_cont").Value = str_anwer



End Function

错误:属性 未找到

这是网页中的 HTML 代码,我认为它位于

<tr>
        <td class="thm">208975260</td>
        <td><pre>교환</pre></td>

        <td class="subject"><a href="#" onClick="return toggleDetail('208975260');" id="view208975260">작동이안되서 교환 원합니다 어떻게 하면되나요?</a></td>
        <td class="id"><span class="thm">st******</span><br>한혜진</td>
        <td class="thm">2016.09.29 12:53:57</td> 

            <td id="date208975260"><span class="point2 ls1">미답변</span>
            </td> 
        <td class="ansr">-</td>
    </tr>

对不起我的英语

我英语不是很流利。

请告诉我为什么它不起作用

没有参考Microsoft Internet Controls (SHDocVw)Microsoft HTML对象库 代码可能如下所示。注意 IsNull 调用。当像这样调用 getElementbyId 并且在页面上找不到该元素时,此函数 returns Variant\Null

在注释代码中显示了第二个示例。在这种情况下,添加了引用并在 HTMLDocument 类型的变量上调用了 getElementbyId。如果在页面上找不到该元素,请使用此函数 returns Nothing

Sub main()
    Dim ie, url, readyStateComplete

    readyStateComplete = 4
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True

    url = "your-url"
    ie.navigate url

    While ie.Busy Or ie.readyState <> readyStateComplete: DoEvents: Wend

    answer1 ie, "<anwer>", "208975260"

    ie.Quit

End Sub

Function answer1(ie As Variant, str_anwer As String, answerid As String)
    Dim a As Object
    If Not IsNull(ie.Document.getElementbyId("view" & answerid)) Then
        ie.Document.getElementbyId("view" & answerid).Click
    End If

    If Not IsNull(ie.Document.getElementbyId("reply_cont")) Then
        ie.Document.getElementbyId("reply_cont").Value = str_anwer
    End If

'    Dim htmlDoc As HTMLDocument
'    Set htmlDoc = ie.document
'    If Not htmlDoc.getElementbyId("reply_cont") Is Nothing Then
'        htmlDoc.getElementbyId("reply_cont").Value = str_anwer
'    End If

End Function

了解 Early/Late Binding 之间的差异。