【问题标题】:VBA with Internet Explorer带有 Internet Explorer 的 VBA
【发布时间】:2020-02-14 23:39:26
【问题描述】:

只需要更好地了解在 VBA 中使用 Internet Explorer 对象。 所以我想点击下面的按钮,代码如下

<a id="DLG_VARIABLE_dlgBase_BTNOK" ct="B" st="" href="javascript:void(0);" class="urBtnEmph" ocl="sapbi_page.sendCommandArray([['TARGET_DIALOG_REF','DLG_VARIABLE',0],['BI_COMMAND_TYPE','OK',0]],event);" onkeydown="ur_Button_keypress(event);" onclick="ur_Button_click(event);" style="text-align:center;overflow:visible;">OK</a>

我的代码如下 -

 Dim IE As InternetExplorer 'Reference to Microsoft Internet Controls
 Set IE = New InternetExplorer
 With IE
 .Visible = True
 .Navigate2 "Somewebsite"

 .Document.getelemetbyclass("urBtnEmph").Click

 End With

End Sub

但是当我尝试运行它时,它说

'对象不支持此属性或方法'。

我对这个 Internet Explorer 对象和 javascript 非常陌生 :(

编辑: 我已将行更改为 ' .Document.getelementsbyclass("urBtnEmph").Click' 但仍然有相同的警告。

然后我尝试了这个'.Document.getElementById("DLG_VARIABLE_dlgBase_BTNOK").Click',它显示'对象变量或未设置块变量'。我已经附上了这个按钮的 html 代码

【问题讨论】:

  • 嗨,brax,我已更改为 .Document.getElementsByClass("urBtnEmph").Click 但仍然显示相同的问题。我是不是选错了类名?
  • 它是 getElementsByClassName 但因为它有一个 id 你应该定位它。您无需等待页面加载,因此您将在元素渲染之前寻找它。如果你解决了这个问题,那么.Document.getElementById("DLG_VARIABLE_dlgBase_BTNOK").Click 应该可以工作。
  • 在屏幕截图上,您要访问的文档看起来位于 iFrame 中。但是您只会看到结束的 iFrame 标记。尽可能多地显示开头部分也可见的 HTML 代码。最好不要作为截图,而是作为代码sn-p

标签: excel vba internet-explorer web-scraping


【解决方案1】:

请查看Common VBA Methods & Properties used in web automation,您可以使用getElementsByClassNamegetElementById方法访问网页元素。

在使用getElementsByClassName方法时,会返回多个类名相同的元素,因此,如果我们要获取特殊元素,可以从数组列表中找到。

所以,请修改您的代码如下:

Public Sub ClickTest()

    Dim ie As Object

    Set ie = CreateObject("InternetExplorer.Application")
    With ie
        .Visible = True
        .Navigate2 "<website url>"

        While .Busy Or .readyState <> 4: DoEvents: Wend 

        'ie.Document.getElementbyId("DLG_VARIABLE_dlgBase_BTNOK").Click  // it also work well. find element by id 

        ie.Document.getElementsByClassName("urBtnEmph")(0).Click

    End With
End Sub

【讨论】:

    猜你喜欢
    • 2020-01-26
    • 2021-04-24
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    相关资源
    最近更新 更多