MS Access - Web 浏览器控件 - 如何在单击时在同一框架中打开链接 document/url

MS Access - Web Browser Control - How to open linked document/url in the same frame as it was clicked

我已将 Web 浏览器控件添加到 Microsoft Access 窗体。我让它导航到一个页面,其中包含我可以单击的其他 link。我的问题是,当我单击 link 时,它会在我的本地网络浏览器 (Edge) 中打开 link。我希望新页面保留在我的 MS Access 应用程序中并在同一个 Web 浏览器控件中打开。

网站的 HTML link 基本上看起来像这样 <a href="#" target="_blank"> 打开一个新的 window (在我的例子中是一个全新的浏览器),我没有能够编辑该网页。

有没有人能为我提供解决方案?非常感谢!

这是一个使用 URL 的基本示例,其中包含 link 和 Target="_self"

Private Sub UserForm_Activate()
    WebBrowser1.Navigate "https://www.dofactory.com/html/target/blank"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Dim doc As Object, links As Object, link As Object, t
    
    Set doc = WebBrowser1.Document
    Set links = doc.getelementsbytagname("A") 'get all links
    
    For Each link In links                      'loop over links
        t = link.getAttribute("target")         'read the "target" attribute
        If Not IsNull(t) Then                   'has a target ?
            If t = "_blank" Then                'target is "_blank" ?
                link.removeAttribute "target"   'unset the target
                Debug.Print "Removed _blank"
            End If
        End If
    Next link
End Sub

您可能在 VBA 语言指南中找不到任何 HTML 文档对象模型方法:这些方法属于“网络内容”领域和一组不同的 COM 引用。

这是我用来获得我想要的结果的 VBA 代码。我确实从另一个外部来源得到了帮助。 在下面的示例中,Web 浏览器控件的名称为 WebBrowser0。

Dim mParentURL As String

Private Sub Form_Load()
    
    mParentURL = Me.WebBrowser0.ControlSource

End Sub

Private Sub WebBrowser0_DocumentComplete(ByVal pDisp As Object, URL As Variant)

    WebBrowser0.Object.Document.Body.innerhtml = Replace(WebBrowser0.Object.Document.Body.innerhtml, "_blank", "_self", , , vbTextCompare)

End Sub