过去,我在许多VB6和Excel VBA表单中都使用了Microsoft WebBrowser控件。我需要再做一次,但是我不知道该怎么做。
我尝试打开一个旧的VB6项目,但收到此错误消息:
Line 17: Class SHDocVwCtl.WebBrowser of control WebBrowser was not a loaded control class.
我尝试将对Microsoft Web Browser
的引用添加到一个新的VBA项目中,但是它不存在。
我尝试按照建议的here添加对msi.dll
的引用,但没有帮助。
我从开发人员功能区尝试-插入-更多控件-Microsoft Web浏览器,它确实存在,但是显示Cannot insert object
。
我尝试按照here的描述使用Shell.Explorer.2
对象,但出现错误:
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
答案 0 :(得分:2)
我无法像以前那样使旧的Web浏览器控件出现在VBA控件工具箱中,但是我能够从代码中将其动态插入到表单中。因此,我无法将小地球仪拖动到表单中,但这不是问题。
一些评论提到更改注册表中的值。这是将嵌入式浏览器插入工作表中所必需的,但是对表单没有影响。
添加对Microsoft Internet控件(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 Browser,只是因为Microsoft Web Browser不在列表中。其他一切似乎都正常。
我仍然不知道为什么旧的VB6应用程序无法加载,但是现在我真的不在乎。