我正在自动化流程以填满网站。使用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();
});
答案 0 :(得分:0)
嗯,我在这个答案中不会做的就是提供你要求的代码 这个答案更像是一个建议,因为我不完全确定你的目的是什么,以及你建议的技术方法是你真正想要的。
将VBA引擎与Web客户端连接起来对我来说没有多大意义,除非您的目标只是检索数据 - 例如Web查询。 如果要在VBA引擎和Web应用程序之间创建交互式数据流,则使用连接到数据库系统的服务器端脚本(用PHP或ASP编写)创建连接似乎更合乎逻辑(或者如果您需要将值存储在临时会话变量中)。
用户输入值,然后单击按钮的事实表明您希望构建某个计算逻辑。这通常在服务器上完成,而不是在浏览器级别完成。
因此我建议你做的是:
Javascript/jQuery -> PHP/ASP -> VBA
如果这对你有意义的话。