【问题标题】:VBA send XMLHttpRequest from Internet ExplorerVBA 从 Internet Explorer 发送 XMLHttpRequest
【发布时间】: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


【解决方案1】:

这些链接看起来很有希望|VB5| C# | Navigate method, 4th argument |Another VB example using StrConv for byte array conversion| 看起来您只是使用 Navigate 方法并将数据打包到第四个参数的字节数组中。上述链接之一是旧链接,但新链接看起来非常相似,所以我认为界面没有太大变化。

请发表反馈意见。

【讨论】:

    最近更新 更多