You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中使用XMLHttpRequest获取micuil.net计算结果遇阻求助

问题根源

你当前的写法存在核心问题:HTMLDocument 是静态DOM对象,没有浏览器的JavaScript执行环境和请求处理能力。你调用.Click只是修改了DOM状态,不会触发网站实际的表单提交请求,自然无法获取到点击后的结果页面。

解决方案

直接模拟网站表单提交的POST请求,不需要先获取页面再操作DOM。步骤如下:

  1. 分析网站提交参数:目标网站的表单会向原URL发送POST请求,携带两个参数:dni(输入的身份证号)和sexo(性别值,m代表男性,f代表女性)。
  2. 用XMLHTTP60直接发送POST请求,带上正确参数。
  3. 解析返回的响应HTML,提取目标结果。
修改后的代码
Function CuitEstimado2(sDni As Variant, sSexo As String) As String
    Dim oHTTP As New XMLHTTP60
    Dim oDoc As New HTMLDocument
    Dim sUrl As String
    Dim postData As String
    
    ' 处理性别参数,确保是网站接受的"m"或"f"
    sSexo = IIf(LCase(sSexo) = "f", "f", "m")
    sUrl = "https://micuil.net/"
    
    ' 构造POST请求的表单编码参数
    postData = "dni=" & sDni & "&sexo=" & sSexo
    
    ' 发送POST请求
    oHTTP.Open "POST", sUrl, False
    oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    oHTTP.send postData
    
    ' 解析返回的HTML
    oDoc.body.innerHTML = oHTTP.responseText
    
    ' 提取结果(根据网站实际DOM结构调整选择器,示例为结果元素id="cuit")
    On Error Resume Next
    CuitEstimado2 = oDoc.getElementById("cuit").innerText
    On Error GoTo 0
    
    ' 未找到结果时返回提示
    If CuitEstimado2 = "" Then CuitEstimado2 = "未获取到结果"
End Function
关键说明
  • 无需先GET页面:直接发送POST请求即可,避免冗余操作。
  • 参数格式匹配:POST请求必须设置Content-Type为application/x-www-form-urlencoded,参数格式要和网站表单提交一致。
  • 结果提取:需根据网站实际的结果DOM结构调整选择器,比如使用getElementById、getElementsByClassName等方法定位结果元素。

内容的提问来源于stack exchange,提问作者core335

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:06:28