在 Web 浏览器控件中使用 HTML 在同一 MS Access 文件中打开 MS Access 表单

问题描述 投票:0回答:1

我想要做的是从同一 Microsoft Access 应用程序中的 Web 浏览器控件中的 HTML 打开 Microsoft Access 表单。

Web 浏览器控件用于生成比尝试使用连续表单执行某些操作更可预测的可视输出。这对于只读输出来说很好,并且我不希望能够编辑控件中的数据。然而,能够写入插入到控件中的 HTML 将会非常有用,这是一种打开 Web 控件所在的 MS Access 文件中已有表单之一的方法。

vba ms-access webbrowser-control
1个回答
1
投票

以下是如何在 HTML 中使用带有按钮的 WebBrowser 控件,其中单击按钮会执行 VBA 代码。然后该代码可以打开一个表单。

将控件的控制源设置为

="about:blank"

在表单后面的代码中,假设控件名为

WBControl
,请执行以下操作:

Dim WBDocument As HTMLDocument
Dim WBBody As HTMLBody
Dim WithEvents Button_1 As HTMLButtonElement
Dim WithEvents Button_2 As HTMLButtonElement

Private Sub WBControl_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If pDisp.ReadyState = READYSTATE_COMPLETE Then
    Set WBDocument = pDisp.Document
    Set WBBody = WBDocument.body
    WBBody.innerHTML = "Choose between <button id=btn-1>Click Me!</button>" & _
                       " and <button id=btn-2>No, Click Me!!</button>"
    Set Button_1 = WBDocument.getElementById("btn-1")
    Set Button_2 = WBDocument.getElementById("btn-2")
End If
End Sub

Private Function Button_1_onclick() As Boolean
Debug.Print "User clicked the first button."
End Function

Private Function Button_2_onclick() As Boolean
Debug.Print "User clicked the second button."
End Function

我通常使用

,而不是将事件处理程序附加到单个元素
Dim WithEvents WBBody As HTMLBody

然后检查单击的元素以查看下一步要做什么:

Sub WBBody_onmousedown()
Dim ev As IHTMLEventObj
Dim el As HTMLObjectElement
Set ev = WBDocument.parentWindow.event
Set el = ev.srcElement
Debug.Print "User clicked a <"; el.tagName; "> element with id="; el.ID
End Sub

如果单击的元素包含不感兴趣的子元素,您可以使用

el.parentElement
在 DOM 树中向上移动,查找要视为可单击的元素。例如,响应表格单元格上的点击,无论单元格内容的复杂性如何。

© www.soinside.com 2019 - 2024. All rights reserved.