繁体   English   中英

带有 Internet Explorer 的 VBA

[英]VBA with Internet Explorer

只需要更好地了解在 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 代码

在此处输入图片说明

请检查Web 自动化中使用通用 VBA 方法和属性,您可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM