解决Web浏览器ActiveX控件在VBA中失败(Excel 2013)

Addressing a web browser ActiveX control fails in VBA (Excel 2013)

我遇到了前段时间为Excel 2007写的一段代码的麻烦。我现在正在使用Excel 2013,它会抛出438运行时错误。

这是引发错误的行。

1
 ActiveSheet.WebBrowser1.Visible = True

我已经在设计模式下检查了Web浏览器对象是否确实存在于活动工作表中,并称为" WebBrowser1"。我还检查了MS Internet Controls是否已启用。 MS是否更改了WebBrowser对象的工作方式?


我已经找到了我自己的机器的问题和解决方法,但是我非常感谢关于处理此问题以分发给其他用户的更好建议。

问题是由于安全问题,为Web浏览器对象设置了KillBit。

解决方法(可能使用户容易遇到安全问题)是进入注册表并将值从400更改为0。我的64位系统的地址是:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Office\\15.0\\Common\\COM Compatibility\\{8856F961-340A-11D0-A96B-00C04FD705A2},但是如果您搜索" COM兼容性",则应该找到正确的位置。

在关闭并重新启动Excel之后,Web浏览器出现并按预期运行。


1
2
3
'this works in Excel 2013
Dim wb As WebBrowser: Set wb = Sheets("sheet1").Shapes("WebBrowser1").DrawingObject.Object
wb.Navigate url

我正在猜测,因为我找不到任何证据来证明这一点,因此在Excel2007中,工作表对象的默认属性必须为Shapes或工作表上的对象集合。我也注意到ws.WebBrowser1引用Web表单上的WebBrowser对象实例的方式,但是在Excel2013中它不起作用。而且Shapes不是Worksheets的默认属性。我会继续寻找...


让我们说ActiveSheet是Sheet1
转到对象浏览器>在类下检查Class sheet1>查找Members of Sheet1
(" WebBrowser1"应该作为属性存在)

现在在"课程"下搜索" Class WebBrowser",然后查找" Members of WebBrowser"
(检查是否存在Visible属性。如果是,则(Sheet1.WebBrowser1.Visible = True)应该适合您。

否则,在该属性中导航并确定可用于隐藏哪个其他属性
(您可能会猜到它的名字))