过去我使用过 Microsoft WebBrowser许多 VB6 和 Excel VBA 表单中的控件。我需要再做一次,但我不知道该怎么做。
我尝试打开旧的 VB6 项目,但收到此错误消息:
Line 17: Class SHDocVwCtl.WebBrowser of control WebBrowser was not a loaded control class.
我尝试将对 Microsoft Web Browser
的引用添加到新的 VBA 项目,但它不存在。
我尝试按照建议添加对 msi.dll
的引用 here ,但没有帮助。
我尝试从开发人员功能区 - 插入 - 更多控件 - Microsoft Web 浏览器,它确实存在,但它显示无法插入对象
。
我尝试使用 Shell.Explorer.2
对象,如所述 here ,但我收到错误:
Sheet1.OLEObjects.Add ClassType:="Shell.Explorer.2", Left:=147, Top:=60.75, Width:=400, Height:=400
Run-time error '1004':
Cannot insert object.
唯一有效的方法是打开 IE 窗口,但我需要将浏览器嵌入到表单中,因为我需要添加一些自定义按钮:
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
最佳答案
我无法让旧的 Web 浏览器控件像以前一样出现在 VBA 控件工具箱中,但我能够从代码中将其动态插入到表单中。所以我无法将小地球仪拖动到表单中,但这不是问题。
一些评论提到更改注册表中的值。这是在工作表中插入嵌入式浏览器所必需的,但对表单没有影响。
添加对 Microsoft Internet Controls (ieframe.dll) 的引用就足够了,然后在表单中使用以下代码:
Option Explicit
Private WithEvents WB As WebBrowser
Private Sub UserForm_Activate()
Set WB = Me.Controls.Add("Shell.Explorer.2")
WB.Navigate "http://google.com"
End Sub
Private Sub WB_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Debug.Print "WB_NavigateComplete2"
End Sub
编辑
@VictorK 在评论中提醒我,我需要右键单击工具箱来添加控件。我确实记得在添加引用后添加了控件,但我不记得(也不记得)右键单击并添加控件。
所以...我需要做的就是添加对 ieframe.dll 的引用而不是 Microsoft Web 浏览器,只是因为 Microsoft Web 浏览器没有出现在列表中。其他一切似乎都运行良好。
我仍然不知道为什么旧的 VB6 应用程序无法加载,但此时我真的不在乎。
关于excel - 如何在 Excel VBA 表单中嵌入浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51501213/