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

修改网页文本时出现Object变量未设置错误的VBA宏问题

解决VBA操作在线Ruby格式化网站的运行时错误91

错误原因

你遇到的运行时错误91,核心问题是XMLHTTP仅能获取页面静态源码,而目标网站的ace编辑器是通过JavaScript动态渲染生成的:

  • 静态源码里的ace_content元素结构和页面加载完成后的实际DOM不一致,导致getElementsByClassName("ace_content")(1)找不到对应对象
  • 即使定位到元素,直接修改innerText也无法设置ace编辑器的内容——ace有专属API来处理内容操作
  • 静态DOM中的按钮未绑定JS点击事件,myBtn.Click无法触发格式化逻辑

正确解决方案(用IE控件模拟真实浏览器交互)

改用InternetExplorer对象模拟浏览器的真实操作,以此适配动态渲染页面和JS绑定事件:

Sub FormatRubyCode()
    Dim ie As Object
    Dim waitTime As Integer
    Dim leftEditor As Object, rightEditor As Object
    Dim beautifyBtn As Object
    
    ' 初始化IE对象
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True ' 设为False可后台运行
    ie.Navigate "https://www.tutorialspoint.com/online_ruby_formatter.htm"
    
    ' 等待页面加载完成
    waitTime = 0
    Do While ie.Busy Or ie.ReadyState <> 4
        DoEvents
        waitTime = waitTime + 1
        If waitTime > 100 Then Exit Do ' 超时保护
    Loop
    
    ' 额外等待确保ace编辑器JS加载完成
    Application.Wait Now + TimeValue("00:00:03")
    
    ' 通过ace API设置左侧编辑器内容
    Set leftEditor = ie.Document.parentWindow.eval("ace.edit('ace_1')")
    leftEditor.setValue "if" & vbCr & "sometext" & vbCr & "elsif" & vbCr & "other text" & vbCr & "else" & vbCr & "last text" & vbCr & "end" & vbCr
    
    ' 定位并点击Beautify按钮
    Set beautifyBtn = ie.Document.querySelector("a.l-btn:contains('Beautify')")
    If Not beautifyBtn Is Nothing Then
        beautifyBtn.Click
    End If
    
    ' 等待格式化完成
    Application.Wait Now + TimeValue("00:00:02")
    
    ' 通过ace API获取右侧格式化结果
    Set rightEditor = ie.Document.parentWindow.eval("ace.edit('ace_2')")
    Debug.Print rightEditor.getValue
    
    ' 可选:关闭IE
    ' ie.Quit
    ' Set ie = Nothing
End Sub

代码说明

  • 用InternetExplorer模拟真实浏览器环境,完美适配动态渲染元素和JS事件
  • 调用ace编辑器官方API(ace.edit、setValue、getValue)操作内容,比直接修改DOM更稳定可靠
  • 添加等待逻辑确保页面和JS完全加载,避免元素未就绪的问题
  • 用querySelector精准定位按钮,避免依赖索引的不稳定情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:42:43