我之前为 Excel 2007 编写的一段代码遇到了问题。我现在使用的是 Excel 2013,它引发了 438 运行时错误。
这是引发错误的行。
ActiveSheet.WebBrowser1.Visible = True
我在设计模式中检查了 Web 浏览器对象肯定存在于活动工作表中,并且被称为“WebBrowser1”。我还检查了 MS Internet Controls 是否已启用。MS 是否改变了 WebBrowser 对象的工作方式?
我之前为 Excel 2007 编写的一段代码遇到了问题。我现在使用的是 Excel 2013,它引发了 438 运行时错误。
这是引发错误的行。
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 浏览器出现并按预期运行。
假设 ActiveSheet 是Sheet1
转到对象浏览器 >Class sheet1
在类下检查 > 查找Members of Sheet1
(“WebBrowser1”应该作为属性存在)
现在Class WebBrowser
在 Classes > Look for 下搜索Members of WebBrowser
(检查 Visible 属性是否存在。如果是的话(Sheet1.WebBrowser1.Visible = True)
应该适合你。
否则浏览该属性并确定可以使用哪些其他属性隐藏(您可能会通过名称猜到))
'this works in Excel 2013
Dim wb As WebBrowser: Set wb = Sheets("sheet1").Shapes("WebBrowser1").DrawingObject.Object
wb.Navigate url
我猜,因为我找不到任何文档来证实这一点,在 Excel2007 中,Worksheet 对象的默认属性必须是 Shapes 或工作表上的对象集合。我也注意到 ws.WebBrowser1 方法在网络上的工作表上引用 WebBrowser 对象实例,但在 Excel2013 中它不起作用。并且 Shapes 不是 Worksheets 的默认属性。我会继续找...