0

我正在自动化一个填充网站的过程。使用 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();
    });
4

1 回答 1

0

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

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

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

因此我建议你做的是:

Javascript/jQuery -> PHP/ASP -> VBA 

如果这对你有任何意义。

于 2013-10-17T10:18:39.393 回答