9

谷歌搜索让我陷入了一堆死胡同。
我正在用 VBA 开发 Excel 加载项,其中一部分涉及使用 WebBrowser 控件在表单中显示(已知)网页并访问其 DOM 组件。

不幸的是,这让我对用户版本的 Internet Explorer 心血来潮。
对于我们实际的网页,我们可以使用 Chrome Frame 支持,让 IE 用户以我们想要的方式查看页面,而不用担心他们的浏览器版本,但是 WebBrowser 控件看不到浏览器插件。

我看过 WebKit.NET 和 GeckoFX。它们有点工作,但除非我完全遗漏了一些东西,否则它们似乎根本没有 Javascript 或 CSS 引擎。或者(在 GeckoFX 的情况下),他们使用的是旧引擎。这使它们毫无用处。

是否有任何 ActiveX 控件可以嵌入到 VBA 表单中,它的工作方式类似于 WebBrowser 控件(具有相似但不相同的 API),使用不同的渲染引擎来跟上最新版本的 Mozilla/Chrome/Opera ,并且仍然正确支持 Javascript 和 CSS?

谢谢!

(根据评论部分修改)

再次编辑:我从下面的一个答案中发现,我正在查看 GeckoFX 的过时版本,但最新版本看起来很有希望。但是现在我有一个新的相关问题:如何在 VBA 中包含 GeckoFX?Windows 不允许我将其注册为 COM 对象。我是否必须以某种方式从源代码自己构建它?或者是什么?

4

3 回答 3

5

Gecokfx 支持最高 33.0 的 Firefox

https://bitbucket.org/geckofx/geckofx/wiki/Version_lists

它同时支持 Javascript 和 CSS。

于 2011-11-08T12:11:55.017 回答
0

如果你想让它在旧版 VBA 中工作,你需要一个 ActiveX 包装器中的浏览器。

Mozilla ActiveX Control 符合要求,但似乎已经死了。(它存在于 Mozilla Prism 中,现在是 Chromeless,但它没有二进制下载。显然你可以从 XULRunner 源代码中自己构建它,但这可能并不简单。)

将 GeckoFX 构建为 ActiveX 控件可能并不难。

于 2011-11-08T20:55:51.113 回答
-1

如果您使用 GeckoFX 或 Chrome Frame,您将受制于用户的 Firefox 或 Chrome 版本。除了为您的用户指定基线版本之外,没有其他方法可以解决此问题。

如果您不能这样做,我建议您解决 VBA 代码中的差异。

换句话说:使用IE WebBrowser控件,因为它保证安装在某个版本或另一个版本中,并且要么指定IE的最低版本(我建议IE6,每个人都应该拥有)并通过检测版本来应对差异和解决与 VBA 的差异。

于 2011-11-11T10:28:31.823 回答