vba 执行网页javascript_如何在VBA中调用JavaScript函数?

本文介绍如何在VBA中调用JavaScript函数,特别是在遇到网页确认弹窗时,通过修改JavaScript函数实现自动化操作。在点击保存按钮时,VBA宏会因确认消息框暂停。解决方法是覆盖确认函数,使其总是返回true,从而避免弹窗并继续执行宏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我需要通过IE确认’确定’/’取消’弹出消息.我在VBA脚本中运行JavaScript函数时遇到问题.我的JavaScript:

function ConfirmSave()

{

var Ok = confirm('Are you sure all Documents and Information are attached and correct before saving?');

if(Ok)

return true;

else

return false;

}

function submitbutton_click() {

document.getElementById('FileAttachement2_hdnButtonFlag').value = "SAVE";

var submitbutton = document.getElementById('cmdDownSave');

var uploadobj=document.getElementById('FileAttachement2_Uploader1');

if(!window.filesuploaded)

{

if (!ConfirmSave()) return false;

if(uploadobj.getqueuecount()>0)

{

uploadobj.startupload();

}

else

{

//var uploadedcount=parseInt(submitbutton.getAttribute("itemcount"))||0;

//if(uploadedcount>0)

//{

return true;

//}

//alert("Please browse files for upload");

}

return false;

}

window.filesuploaded=false;

return true;

}

在手动过程中,当我单击“保存”按钮时,页面将弹出一个确认消息框,当弹出窗口出现时,我的宏将停止运行,除非单击该按钮.

这是我试过的代码,点击保存按钮,

Set ElementNameV = HTMLDoc.getElementsByName("cmdsave")

ElementNameV(0).click

我也尝试使用removeattribute和setattribute,弹出消息消失但它没有上传文件,因为我需要按下确认消息框中的’确定’,单击保存按钮开始文件上传时出现.

ElementNameV(0).removeAttribute ("onclick")

ElementNameV(0).setAttribute "onclick", "return true"

ElementNameV(0).click

我尝试使用下面的脚本运行JavaScript函数,但它也显示确认弹出消息框:

Call HTMLDoc.parentWindow.execScript("submitbutton_click()")

解决方法:

你应该能够用一个只返回true的函数覆盖ConfirmSave函数:

HTMLDoc.parentWindow.execScript "window.ConfirmSave = function(){return true;};"

要么

HTMLDoc.parentWindow.execScript "window.confirm = function(){return true;};"

甚至

HTMLDoc.parentWindow.eval "window.confirm = function(){return true;};"

在单击按钮之前运行它.

经过测试并在IE11中运行

标签:javascript,vba,excel-vba,popup,automation

来源: https://codeday.me/bug/20190927/1824616.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值