我应该参考哪个Microsoft Word(和Excel)Interop程序集或DLL?

时间:2011-03-07 16:04:42

标签: .net excel dll ms-word automation

我正在使用VB.NET和.NET 3.5框架。

我正在尝试使用各自的PIA自动化word和excel以获得intellisense帮助,然后(因为用户没有安装PIA程序集/ DLL)删除引用,以便它可以作为COM对象调用而不用抛出错误。

我找到了这篇文章: http://msdn.microsoft.com/en-us/library/15s06t57.aspx 但它并没有真正帮助我使用什么版本的程序集/ DLL。当我去添加引用时,我会看到类似这样的内容:

first pane

然后

Second pane

然后

third pane

请注意所有这些突出显示的声音都相似,并且有多个版本的程序集。我开始的链接建议与产品版本相关联的DLL的名称(如WORD版本12 --- Microsoft.Office.Interop.Word.dll),但没有说明版本的PIA大会。那么我怎么知道使用哪一个?

还有一个更好的问题:为什么这不是 OBVIOUS ?我想要的只是微软说“嘿,你想自动化与Word 2007的邮件合并?使用[在这里插入有意义的DLL名称(PIA或”工具“程序集?)]。顺便说一下,你可以在这里获取该DLL [ “这里”超链接到我需要的下载]。使用可能安装了2007或2010的计算机?确保你有两个DLL(如果是这种情况),以下是你如何测试它:[insert helpful例子。。

(例如“对于Word 14(即Word 2010),使用Microsoft.Office.Interop.Word DLL版本12.0.0.0”(这是这种情况吗?我不知道。))那应该是显而易见的,似乎并非如此。

也许它 显而易见? DLL的版本是否与程序版本相同? (即Microsoft.Office.Interop.Word DLL版本12.0.0.0 =?= WORD版本12)

也许我过度思考这个问题,但对我来说仍然不是很明显。如果你能回答第一个问题,我会很高兴,但如果你能解释这两个问题,那就更好了。

4 个答案:

答案 0 :(得分:4)

比利基本上回答了你的问题

Office 2010 = 14.x.x.x

Office 2007 = 12.x.x.x

Office 2003 = 11.x.x.x

Office xp = 10.x.x.x

在此之前,没有任何PIA,所以你必须自己制作。

答案 1 :(得分:1)

使用类浏览器查看您添加的DLL是否公开了您想要的功能(就像您为添加的所有其他参考所做的那样。

  

为什么这不适合某个地方?

那么,您希望在办公室集成中可能创建的所有内容都记录在某处吗?这没有意义!

答案 2 :(得分:1)

有许多方法可以让猫皮肤被称为“我怎么知道X对象是什么”。

  1. 使用对象浏览器并搜索您想要的方法。
  2. 对其进行编码,然后一次添加一个程序集 - 速度慢且效率低,但它可以正常工作
  3. 至于找出特定位,Microsoft MSDN,支持等都有资源。例如,对于邮件合并,我发现了这个: http://support.microsoft.com/kb/301659

    如果邮件合并成问题,可以很容易地遵循代码的引用。

    至于“为什么这在某处并不明显”评论:Word对象的记录相当充分。也许不是你想要自动化Intellisense的水平,但这是一个边缘情况,IMO。自1.0版本发布之前,我就一直在编写.NET Framework,并且还没有针对您正在做的业务案例。我也不知道有这种商业案例的人。遵循80/20规则,我并不感到惊讶,因为没有关于这个规则的手持操作......甚至是完整的文档。

答案 3 :(得分:1)

它在文档中,例如DocumentClass

  

命名空间:Microsoft.Office.Interop.Word
  程序集:Microsoft.Office.Interop.Word(在microsoft.office.interop.word.dll中)

如果它对其他程序集有任何依赖关系,那么它应该自己添加它们,或者它可能会在运行时提示你添加它们。

我不确定是否有选择哪一个的明确指南,但我会选择

  • 最早版本的Microsoft.Office.Interop.Word,其中包含您需要的所有功能,因此您可以与尽可能多的Word版本兼容
  • 更喜欢使用正确的.NET版本构建的程序集 - 我已经看到了针对4.0的1.1程序集的问题(虽然不是Interop程序集)但我认为通常1.1和2.0(= 3.5的运行时版本)应该没问题