VB.Net自动化MS Word的拼写检查功能

时间:2008-10-01 21:16:39

标签: vb.net winforms office-2007 office-automation

目前正在开发的应用程序要求使用MS Word对应用程序中的某些textareas执行拼写检查。

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

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

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

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我在这里猜测,但是如果因为你不能在2007安装中使用2007 PIA(主互操作程序集),你可以尝试通过反射访问PIA,因为我猜你想要的呼叫不会在两者之间进行更改,然后无关紧要 - 您将使用已安装的任何一个。如果您正在安装PIA,那么您可以让用户告诉您他们拥有哪些,​​或者更聪明一点,只需尝试2007,如果失败,请尝试2003。

就像我说的那样,我猜这里可能值得一试。

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

答案 2 :(得分:0)

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

不幸的是,尽管我已将此解决方案用于自己的工作,但我还没有使用拼写检查进行测试。最后,请确保使用要集成的所有Office版本测试代码。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您实际上可以打包两个版本所需的office11和office12 interops。这需要一些小工作,但我设法做到了。我在注册表中检查以查看要调用的互操作,然后使用正确的版本执行拼写检查。它甚至可以检查你是否安装了Word并抛出一个错误警告,你不能在没有Word的情况下进行拼写检查。由于与我们需要使用的Office绑定的医学词典,我们与使用Word有关。

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