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位系统的地址是:
在关闭并重新启动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是
转到对象浏览器>在类下检查
(" WebBrowser1"应该作为属性存在)
现在在"课程"下搜索"
(检查是否存在Visible属性。如果是,则
否则,在该属性中导航并确定可用于隐藏哪个其他属性
(您可能会猜到它的名字))