如何隐藏或覆盖 MS Access ActiveX Web 浏览器控件?
How to hide or cover a MS Access ActiveX Web Browser control?
我有一个数据库,用户可以在其中的一个表单上的 Textbox1 中输入一个值;该窗体还有一个 ActiveX Web 浏览器控件 (acxWebBrowser1),加上另一个空白文本框 2,最后是一个命令按钮。用户在Textbox1中输入文本并点击command按钮后,VBA代码会导航到acxWebBrowser1中的特定网页,将Textbox1的值输入到网页表单中,然后在网页中获取结果acxWebBrowser1。然后通过 VBA 代码获取结果并输入数据库表单上的 Textbox2。
我需要做的是隐藏 ActiveX Web 浏览器控件以 (a) 防止用户弄乱网页,以及 (b) 防止 ActiveX Web 浏览器的混乱和分心,因为VBA 代码在幕后与网页进行所有必要的交互。
问题是,我无法让 acxWebBrowser1 隐藏在窗体上的矩形框控件后面,因为浏览器会自动将自身移动到控件堆栈的顶部。如果我将 acxWebBrowser1 控件的大小减小到非常小,网页将无法正常运行。如果我使 Web 浏览器控件不可见,则代码无法获取所需的值。我不能使用 POST 方法来避免使用网络浏览器。 (我不能使用 POST 可能是错误的——如果那是要走的路,也许有人可以告诉我如何去做。)
如何在网络浏览器控件上隐藏或放置某些内容?
三个小时后,我突然明白了如何完成隐藏 ActiveX Web 浏览器但仍然让 VBA 代码可以访问它。简单:当 运行 访问 ActiveX Web 浏览器的代码时不更新屏幕,当 VBA 需要访问时使用 .Visible 属性 到 "show" 浏览器控件它(但如果屏幕更新关闭,用户将看不到它),然后在 VBA 完成访问后隐藏浏览器控件。
这是我用来完成该操作的代码:
Application.Echo False 'turn off screen updating
Me.acxWebBrowser1.Visible = True 'make web browser control "visible" to VBA code
{do stuff, like: process web page}
Me.btnClickMe.SetFocus 'set focus on the button so we can hide the web browser control
Me.acxWebBrowser1.Visible = False 'make web browser invisible so user is not distracted
Application.Echo True 'turn screen updating back on
Me.Refresh 'refresh the screen; this is probably not necessary
就是
- 绝对确定 重新打开屏幕更新(回显)
您应该将任何错误处理发送到设置 Application.Echo True
的代码,否则如果代码在将 echo 设置为 False 后崩溃,您将无法看到或执行任何操作。
我有一个数据库,用户可以在其中的一个表单上的 Textbox1 中输入一个值;该窗体还有一个 ActiveX Web 浏览器控件 (acxWebBrowser1),加上另一个空白文本框 2,最后是一个命令按钮。用户在Textbox1中输入文本并点击command按钮后,VBA代码会导航到acxWebBrowser1中的特定网页,将Textbox1的值输入到网页表单中,然后在网页中获取结果acxWebBrowser1。然后通过 VBA 代码获取结果并输入数据库表单上的 Textbox2。
我需要做的是隐藏 ActiveX Web 浏览器控件以 (a) 防止用户弄乱网页,以及 (b) 防止 ActiveX Web 浏览器的混乱和分心,因为VBA 代码在幕后与网页进行所有必要的交互。
问题是,我无法让 acxWebBrowser1 隐藏在窗体上的矩形框控件后面,因为浏览器会自动将自身移动到控件堆栈的顶部。如果我将 acxWebBrowser1 控件的大小减小到非常小,网页将无法正常运行。如果我使 Web 浏览器控件不可见,则代码无法获取所需的值。我不能使用 POST 方法来避免使用网络浏览器。 (我不能使用 POST 可能是错误的——如果那是要走的路,也许有人可以告诉我如何去做。)
如何在网络浏览器控件上隐藏或放置某些内容?
三个小时后,我突然明白了如何完成隐藏 ActiveX Web 浏览器但仍然让 VBA 代码可以访问它。简单:当 运行 访问 ActiveX Web 浏览器的代码时不更新屏幕,当 VBA 需要访问时使用 .Visible 属性 到 "show" 浏览器控件它(但如果屏幕更新关闭,用户将看不到它),然后在 VBA 完成访问后隐藏浏览器控件。
这是我用来完成该操作的代码:
Application.Echo False 'turn off screen updating
Me.acxWebBrowser1.Visible = True 'make web browser control "visible" to VBA code
{do stuff, like: process web page}
Me.btnClickMe.SetFocus 'set focus on the button so we can hide the web browser control
Me.acxWebBrowser1.Visible = False 'make web browser invisible so user is not distracted
Application.Echo True 'turn screen updating back on
Me.Refresh 'refresh the screen; this is probably not necessary
就是
- 绝对确定 重新打开屏幕更新(回显)
您应该将任何错误处理发送到设置 Application.Echo True
的代码,否则如果代码在将 echo 设置为 False 后崩溃,您将无法看到或执行任何操作。