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

Access 2010中WebBrowser控件查找文本下一处的实现方法

在MS Access 2010的WebBrowser控件中实现连续查找文本功能

要实现连续查找下一处匹配项,核心是保留上一次查找的文本范围位置,每次从该位置的末尾开始新的查找,而不是每次都从文档开头重新初始化范围。以下是具体实现方案:

步骤1:声明模块级变量

将文本范围变量改为模块级,这样每次调用函数时能保留上一次的查找状态:

Private WithEvents oWeb As WebBrowser
Private m_tr As IHTMLTxtRange ' 存储上一次查找的文本范围,跨函数保留状态

步骤2:修改查找函数

更新函数逻辑,支持首次查找和连续查找下一个的场景:

Public Function FindAndHighlight(strText As String, Optional blnNext As Boolean = False)
    Dim doc As HTMLDocument
    
    Set oWeb = Me.WebBrowser0.Object
    Set doc = oWeb.document
    
    ' 首次查找或无历史范围时,从文档开头创建新范围
    If Not blnNext Or m_tr Is Nothing Then
        Set m_tr = doc.body.createTextRange
    Else
        ' 从上一次范围的末尾开始查找
        m_tr.collapse False ' 折叠到上一次选中范围的结束位置
    End If
    
    ' 执行查找(参数4代表向后搜索)
    If m_tr.findText(strText, 1000000, 4) Then
        m_tr.Select
        m_tr.scrollIntoView
    Else
        ' 查找至末尾时的处理
        If MsgBox("已到文档末尾,是否从头开始查找?", vbYesNo) = vbYes Then
            Set m_tr = doc.body.createTextRange
            If m_tr.findText(strText) Then
                m_tr.Select
                m_tr.scrollIntoView
            Else
                MsgBox "未找到指定文本。"
                Set m_tr = Nothing
            End If
        Else
            Set m_tr = Nothing
        End If
    End If
End Function

使用方法

  • 首次查找(或从头开始):调用 FindAndHighlight "你的查找文本"
  • 查找下一个匹配项:调用 FindAndHighlight "你的查找文本", True

注意事项

  • 确保WebBrowser控件已完成文档加载,否则document对象可能为空,可在控件的DocumentComplete事件中做初始化处理。
  • 模块级变量m_tr会保留查找状态,直到找不到文本或主动重置,避免多次重复查找同一位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:42:35