使用VBA处理IE弹出窗口

时间:2018-09-21 13:21:11

标签: javascript excel vba excel-vba internet-explorer

我有一个Excel VBA宏,可通过Internet Explorer与Intranet站点进行交互,以遍历客户列表,打开客户资料,更新字段并保存更改。

我遇到的问题是,当我将更改保存到客户个人资料时,Web应用程序中会弹出一个窗口,要求我确认对他们的个人资料所做的更改,但我不知道如何编程点击弹出窗口中的“确定”。当我单击“保存”按钮时,javascript将执行一个函数调用以提交更改。

发送键不起作用,因为在确认弹出窗口之前,代码不会执行下一行。我尝试了提到的其他解决方案,但无法使它们正常工作(javascript部分对我来说是新的)。

在弄清楚如何以编程方式单击“确定”以使我的代码和平运行方面的任何帮助将不胜感激。

VBA代码:

    'pulling up edit user profile link
    s = objIE.document.getElementsByTagName("a")(4).href
    objIE.navigate s

    'wait here a few seconds while the browser is busy
    Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

  'Adding value to customers profile and saving changes
    objIE.document.all.Item("Contact_Id").Value = Sheets("List").Range("c" & n).Value
    objIE.document.all.Item("submitBn").Click

    'wait here a few seconds while the browser is busy
    Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

提交按钮正在调用的Java脚本函数:

function doNextPage() {
if (checkFormInputForEnglish(document.editProfileForm)) {
    if(validateForm()){
        if(confirm("Do\x20you\x20want\x20to\x20submit\x20the\x20changes\x3F")) {
            document.editProfileForm.submitBn.disabled = true;
            document.editProfileForm.submit();

1 个答案:

答案 0 :(得分:0)

使用VBA

通过objIE.document.all.Item("submitBn").Focus

聚焦提交按钮

然后使用SendKeys "~"单击该按钮。

因此这里不会参与VBA。现在,通过检查HTML弹出代码是否可见/存在来检测(HTML)弹出