getElementById将无法在VBA中使用,错误438

时间:2019-06-14 02:54:49

标签: excel vba getelementbyid

我在VBA上相对较新(我了解基本知识,但其他知识不多),并且我试图建立一些代码来为我填写在线表单,但是当我运行代码时,出现438错误:

  

对象不支持此属性或方法

何时到达

ie.document.getElementById ("q")

我已将HTML对象库和Microsoft Internet控件添加到我的引用中。我看了很多在线论坛。我什至将整个脚本直接复制并粘贴到VBA中。什么都不会使它使用getElementById()。这是我的代码:

Sub internetstuff()

Dim ie As Object

Set ie = CreateObject("internetexplorer.application")

ie.Visible = True

ie.navigate ("https://www.google.com/")

Set searchbx = ie.document.getElementById("q")

searchbx.Value = "Howdy!"

End Sub

应该发生的是,它应该打开InternetExplorer,转到Google,然后在搜索栏中填充“ Howdy!”。 相反,它仅打开google,然后我收到错误消息,并且它停止运行。

2 个答案:

答案 0 :(得分:2)

因为"q"不是ID,所以是Name

您必须使用GetElementsByName并选择第一个元素

尝试一下:

Sub internetstuff()

Dim ie As Object

Set ie = CreateObject("internetexplorer.application")

ie.Visible = True

ie.Navigate ("https://www.google.com/")

    Do Until ie.ReadyState >= 4
        DoEvents
    Loop


Set searchbx = ie.document.getElementsByName("q")(0)

searchbx.Value = "Howdy!"

End Sub

我还添加了一个等待事件,以防加载谷歌需要时间。


结果:

enter image description here

答案 1 :(得分:0)

一种更简洁有效的方法是使用querySelector返回name属性的第一个匹配项

webview