通过VBA Excel自动化InternetExplorer的网站消息框

时间:2013-10-17 05:10:28

标签: excel internet-explorer vba

我正在自动化流程以填满网站。使用Excel宏,一旦我登录网站,在所需的文本框中插入一个值,然后单击按钮,一个网站消息框会出现一个警告,要求我确认 - 您确定要更新该值吗?

宏的执行在该级别停止,导致不再执行宏。

在搜索解决方案时,我发现应该从宏调用JavaScript函数,即在确认消息框时执行的函数,而不是单击网页上的原始按钮。

我想帮助编写代码以在Excel宏中调用JavaScript函数。

以下是网页视图源页面中的HTML代码。

$('#reloadButton').click(function () {
    $(this).text(
        $(this).attr('name')
    ).attr('disabled', 'disabled');

    window.location.href = window.location.href.replace(/#.*$/, '');
});

SignalConsumer = function () {};

SignalConsumer.prototype = new TraderSettingsTool();

SignalConsumer.prototype.mySummaryPage = 'https://kvinvest.com/month/?action=template&tid=my_status';

SignalConsumer.prototype.isShowWaiver = 0;

SignalConsumer.prototype.amountPrecision = 1;



SignalConsumer.prototype._elements = {
    "trading": {
        "popup": $('#ssc-trading-popup'),
        "amount": $('#ssc-trading-amount'),
        "trade": $('#ssc-trading-trade'),
        "provides": $('#ssc-trading-provides')
    },
    "slippage": {
        "popup": $('#ssc-slippage-popup')
    },
    "provider": {
        "popup": $('#ssc-provider-popup')
    },
    "consumers":{
       "holder":   $('#ssc-consumers-holder'),
       "template": $('#ssc-consumers-template'),
       "form":     $('#ssc-consumers-form')
    },
    "subscribe": {
        "server": $('#ssc-subscribe-server'),
        "apply":  $('#ssc-subscribe-apply'),
        "loader": $('#ssc-subscribe-loader'),
        "info":   $('#ssc-subscribe-info'),
        "form":   $('#ssc-subscribe-form'),
        "description":   $('#ssc-subscribe-description')
    },
    "activate": {
        "form": $('#ssc-activate-form'),
        "slippage": $('#ssc-activate-slippage'),
        "amount": $('#ssc-activate-amount'),
        "popup": $('#ssc-activate-popup'),
        "apply": $('#ssc-activate-apply'),
        "cancel": $('#ssc-activate-cancel'),
        "agree": $('#ssc-activate-agree'),
        "sll": $('#ssc-activate-sll-value'),
        "loader": $('#ssc-activate-sll-loader'),
        "redirect": $('#ssc-activate-redirect')
    },
    "waiver": {
        "popup": $('#ssc-waiver-popup'),
        "agree": $('#ssc-waiver-agree'),
        "apply": $('#ssc-waiver-apply'),
        "subscribe": $('#ssc-waiver-subscribe')
    },
    "history": {
        "log": $('#ssc-history-log')
    }
};

SignalConsumer.prototype.bindEvents = function () {
    var self = this;

    this._elements.subscribe.form.find('form').submit(function () {
        return false;
    });


      // I THINK BELOW IS THE MESSAGE BOX POP UP

    this._elements.subscribe.apply.click(function () {

        if(!confirm('Are you sure to update?')){
            return false;
        }

        self.subscribeToServer();
        return false;
    });

    // On show history popup
    this._elements.history.log.click(function () {
        self.loadHistoryLog();
        return false;
    });

    // --- ACTIVATION LOGIC ---
    this._elements.activate.apply.click(function () {
        self.applyActivateServer();
        return false;
    });

    this._elements.activate.agree.change(function () {

        var disabled = $(this).is(':checked') ? '' : 'disabled';

        self._elements.activate.apply.attr('disabled', disabled);
    });

    this._elements.activate.cancel.click(function () {
        self.hidePopUp();
        return false;
    });

    this._elements.activate.redirect.click(function () {
        self.hidePopUp();
    });

1 个答案:

答案 0 :(得分:0)

嗯,我在这个答案中不会做的就是提供你要求的代码 这个答案更像是一个建议,因为我不完全确定你的目的是什么,以及你建议的技术方法是你真正想要的。

将VBA引擎与Web客户端连接起来对我来说没有多大意义,除非您的目标只是检索数据 - 例如Web查询。 如果要在VBA引擎和Web应用程序之间创建交互式数据流,则使用连接到数据库系统的服务器端脚本(用PHP或ASP编写)创建连接似乎更合乎逻辑(或者如果您需要将值存储在临时会话变量中)。

用户输入值,然后单击按钮的事实表明您希望构建某个计算逻辑。这通常在服务器上完成,而不是在浏览器级别完成。

因此我建议你做的是:

Javascript/jQuery -> PHP/ASP -> VBA 

如果这对你有意义的话。