ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

如何在VBA中调用JavaScript函数?

2019-09-27 20:34:56  阅读:907  来源: 互联网

标签:javascript vba excel-vba popup automation


我需要通过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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有