VBA - IE GetElementByID无法正常工作

时间:2013-03-06 20:19:14

标签: internet-explorer vba vbe

我在搜索框中输入文本时遇到了一些问题,因为在我认为是相关ID标记之后。我从页面的源代码中获取了ID。我之前和其他网站一样。有人可以帮帮我吗?还有另一种方法吗?

Sub FileUpload()

Dim IEexp as Object
IEexp.visible = True
IEexp.Navigate ("www.example.com")

'this is where the problem
IEexp.Document.GetElementByID("step1_id_bean_newSupportingDoc_description").Value _ 
= "monthly update"

End Sub

我收到“自动化错误调用的对象已与其客户端断开连接”

我从中提取ID的源代码:

<td class="Label">Description</td>
  <td class="Data"><input type="text" name="bean.newSupportingDoc.description" size="60" maxlength="250" value="" id="step1_id_bean_newSupportingDoc_description" class="NoBorder"/>
</td>

3 个答案:

答案 0 :(得分:1)

如果您使用Set IEexp = New InternetExplorerMedium,则无需更改“Internet选项”中的设置。它使用中等完整性应用程序设置自动实例化IE对象。

答案 1 :(得分:0)

你可以尝试

Do Until IEexp.readyState = 4
DoEvents
Loop



IEexp.Document.getElementById("username").Value = "Monthly update"


IEexp.Document.getElementById("password").Value = FilePth

答案 2 :(得分:0)

代码有效。 “保护模式”怎么样?请参阅此文章:http://www.sevenforums.com/tutorials/63141-internet-explorer-protected-mode-turn-off.html。 如果您的IE浏览器在保护模式下运行,请尝试将其关闭并再次运行代码。

' Add References:
' - Microsoft HTML Object Library
' - Microsoft Internet Controls

Sub FileUpload()

    Dim IEexp As InternetExplorer
    Set IEexp = New InternetExplorer
    IEexp.Visible = True
    IEexp.navigate "www.example.com"

    Do While IEexp.readyState <> 4: DoEvents: Loop

    Dim inputElement As HTMLInputElement
    Set inputElement = IEexp.Document.getElementById("step1_id_bean_newSupportingDoc_description")

    If (Not inputElement Is Nothing) Then
        inputElement.Value = "monthly update"
    Else
        MsgBox "Input element not found on web page."
    End If

    IEexp.Quit
    Set IEexp = Nothing
End Sub