【发布时间】:2026-01-16 16:20:03
【问题描述】:
tl;dr:如何通过在 Internet Explorer 中使用 XMLHttpRequest 在 VBA 中发送 POST 请求?
我是关于自动使用互联网上的页面。想法是从 Excel 开始,在工作表中收集一些数据,然后将这些数据传输到 Internet 页面,同时单击一些按钮,然后手动进行。
我记录了F12 Developer工具手动执行的整个过程。通过将数据放入 Internet 页面的文本框中,会发生一些 Javascript 事件,这些事件会通过 XMLHttpRequest 触发 POST 请求:
现在,通过在 VBA 中复制上述过程(使用getElementById、.click()、.value= 等),似乎没有触发相关事件:没有发送如上所示的 POST 请求到服务器,并且没有打开额外的掩码。这就是为什么我想省略文本框填充和单击方法,而只是复制 POST 请求。
如何使用 Internet Explorer 从 VBA 执行此操作?
免责声明:我知道如何使用MSXML2.serverXMLHTTP 发送 POST 请求,这在网络上已被描述了数百次。但是,它总是非此即彼:要么使用 Internet Explorer,要么使用MSXML2.serverXMLHTTP。但是,我需要 Internet Explorer 中的请求。
【问题讨论】:
-
如果没有看到实际的 URL,就不可能回答这个问题 - 您的 HTML 页面中的代码可能会响应许多潜在事件(模糊、向下/向上键、焦点等)
-
@TimWilliams:(i)是否有可能以一种聪明或系统的方式找出正在发生的事件? (--无需反复试验)(ii)无论如何,我不想使用事件再现方式。我想在 Internet Explorer 中使用 XMLHttpRequest 直接触发一个发布请求,而这来自 VBA ...以便服务器看到与 Javascript 事件触发的结果相同的结果。
-
是的,这可能是可能的,但您需要检查页面并弄清楚那里到底发生了什么。
-
@TimWilliams:好的,谢谢,这与(i)有关。 OP 的核心在 (ii)。有什么想法吗?
-
我在谈论这两个部分。你需要弄清楚 (i) 才能做到 (ii)。
标签: vba excel internet-explorer xmlhttprequest