我正在尝试创建一个简单的表单来显示用户可以单击以发起呼叫的电话号码。 主要问题是如何“加载”要显示的 html,因为浏览器控件旨在加载 URL。
经过大量搜寻,我已经找到了旧的 Web 浏览器控件来执行此操作。 它会显示链接,然后单击会打开 Windows 弹出窗口,询问要使用哪个应用程序。
它的替代品是不兼容的 Edge 浏览器控件 - 它需要自己的代码。
经过多次失败的尝试,来自 HevHut here 的代码帮助我加载了 html。
打开表单会显示电话号码链接,但单击该链接时没有弹出窗口 - 所发生的只是表单变成深灰色并且不执行任何操作。
Form_Load中的相关代码甚至包括:
w = "<a href='tel:5555555555'>call 5555555555</a>"
sJS = "document.open();document.write(""" & w & """);document.close();"
Me.EdgeBrowser2.Navigate "about:blank"
Do
DoEvents
Loop Until EdgeBrowser2.ReadyState = READYSTATE_COMPLETE 'READYSTATE_COMPLETE=4
Me.EdgeBrowser2.ExecuteJavascript sJS
我尝试省略第 3 行到第 6 行,它的行为完全相同。
对比旧的浏览器控制代码
Set webControl = Me.Wb.Object
With webControl
.Navigate "about:blank"
Do
DoEvents
Loop Until webControl.ReadyState = READYSTATE_COMPLETE 'READYSTATE_COMPLETE=4
.Document.Write "<a href='tel:5555555555'>Call the store</a>"
End With
有效。
对常规网站使用 Edge 浏览器控件,或使用与顶部相同的代码,但用常规 URL 替换 href 字符串就可以了。
我尝试了“mailto:”链接,其行为与“tel:”完全相同
最后我尝试了“mailx:”,得到了相同的结果。
我的结论是不支持 tel: 和 mailto: 链接。
是否有一些设置或其他必须激活?
您真的,真的,不需要需要引入整个现代(并且会破坏RAM)浏览器引擎,只是为了正确处理
tel:
(或callto:
)URI。
您所需要的只是
ShellExecute
- 这已经可以在 VBA/VB6 中轻松访问:
| 步骤|截图|
|----|----|
| 1. 打开 Access 的 VBA 编辑器。
2.打开参考文献窗口。 | |
| 3. 添加对“Microsoft Shell 控制和自动化”
的引用(对于 64 位 Office,该引用应来自
C:\Windows\System32\Shell32.dll
或 C:\Windows\SysWow64\shell32.dll for 32-bit Office. | [![enter image description here][2]][2] | | 4. Add a
Sub-routine that simply passes any
uriparameter in to
ShellExecute.<br /><br /><sub>The screenshot on the right shows me testing itwith my own phone-number in a
tel:URI, and it makes Windows prompt me to choose Teams or Skype (or another browser) to handle the
tel :` URI,因为我当前没有设置任何默认处理程序)| |
代码如下:
Sub OpenUri(uri As String)
Dim shl As Shell32.Shell
Set shl = New Shell32.Shell
shl.ShellExecute uri
End Sub
真的就是这么简单。不需要 一级方程式赛车 - 只是去商店 需要网络浏览器引擎。