如何在VBA中调用JavaScript函数?
作者:互联网
我需要通过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