2008-10-01 69 views
1

当前正在开发的应用程序具有使用MS Word对应用程序中的某些textareas执行拼写检查的要求。VB.Net将MS Word自动化以进行拼写检查功能

我目前有Office 2007(这是Office 12 com对象)。

我的问题是,如果我在Office 12中添加Office对象,会发生什么?这是关于其他开发箱以及最终用户。

我相信最终的结果是这些用户不能使用拼写功能吗?如果我使用了Office 11对象,这意味着如果用户安装了Office 07,用户将无法执行拼写检查?

回答

1

我们放弃尝试使用对Word的依赖关系,因为它们都安装了不同的版本,或者根本没有安装Office!而是选择NetSpell

0

我在这里猜测,但如果是因为你不能在2003安装中使用2007 PIA(Primary Interop Assembly),你可以尝试通过反射来访问PIA,因为我猜想你想要的呼叫赢得'两者之间没有任何变化,那么它就无关紧要 - 您将使用安装的任何一个。如果你正在安装PIA,那么你可以让用户告诉你他们有哪些,或者更聪明一点,只是尝试2007年,如果失败,尝试2003年。

就像我说的,我在这里猜测,但它可能值得一试。

编辑:我发现这个link关于Office PIA的。这是指Excel,但实际上涵盖了Office。我不羡慕你的任务。看起来您需要检测PIA(可能安装或未安装)并采取相应措施。听起来像是一件反思我的工作。

0

较新版本的Office将保留大多数(如果不是全部)与旧版COM对象的兼容性。这意味着如果您想针对Office 2003和2007进行编程,则需要将Office 11 COM对象用作依赖项,因为它们是2003年发布时的最新版本。只要您验证所需的方法存在于两个COM对象版本中,只要您使用较旧的COM对象,就应该没有问题。

不幸的是,虽然我已经为自己的工作使用了这个解决方案,但我还没有使用拼写检查进行测试。最后,请确保您使用要与之集成的所有Office版本测试您的代码。

0

我对这个问题的直觉反应是,只是建议你去另一条路线。尝试使用第三方拼写检查控件。他们相对便宜(你可能会发现一些免费的控件)。至少你可以通过这种方式来控制应用程序中包含的控件的版本,并且可以依靠它的功能。坦率地说,我很惊讶这个库已经不是Windows内置的。当然,Windows支持的所有语言都很复杂,但现在它与用户期望的复制/粘贴类似。

0

实际上,您可以打包office11和office12 interop工作所需的两个版本。这需要一些小的工作,但我设法做到了。我在注册表中进行检查,看看哪个interop调用,然后用正确的版本执行拼写检查。它甚至可以检查您是否安装了Word,并引发一个错误提示,说明您无法在没有Word的情况下进行拼写检查。由于与我们需要使用的Office捆绑在一起的医疗字典,我们与使用Word相关联。

在interop或Com包装上进行搜索,我想你会发现你可以很容易地使用它们。