excel - 如何在 Excel VBA 表单中嵌入浏览器?

标签 excel vba webbrowser-control

过去我使用过 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/

相关文章:

c# - 使用c#在一个单元格中使用多种格式

excel - 运行时错误 1004。选择无效,有几个可能的原因

excel - 将 OOo 宏转换为 Excel 宏

excel - 单击“退出”或“取消”时出现错误消息 "Application.GetOpenFilename"

vba - 打开其他工作簿后仍保留在事件工作簿中

excel - 更改图表形状文本框的颜色(Excel VBA)

ms-access - 存取ADP-赞成/反对?

.net - .NET WebBrowser 控件新窗口上的 Javascript Window.Opener 对象为空

c# - 在显示到 WPF WebBrowser 控件之前操作 HTML 文档

c# - 我想在 Mono Windows 窗体中使用 WebBrowser 控件