.net 为什么引用不了MSWORD OLB

摘要 : . Net Why can not MSWORD OLB quote

测试环境:Visual Studio 2005 + Microsoft Office 2003(完全安装,当然包括Microsoft Visual Studio 2005 Tools for the Microsoft Office System 可再发行组件包,如果没有完全安装Office的话则需要安装这个东东。)
可能网络就是用来转贴的吧,看到的绝大部分文章都说将非受管代码COM组件(如MSWORD.OLB)转换成受管代码的类库(Word.dll)的方法是:
首先把COM组件""EXCEL9.OLB""拷贝到C盘的根目录下,然后输入命令:

TlbImp WORD9.OLB (据说因为Office 2000以后的版本中没有了WORD9.OLB啦)

就会在C盘的根目录下面就产生三个DLL文件:""Word.dll""、""Office.dll""、""VBIDE.dll""。(文章作者的环境可能是VS 2003+Office 2000或者Office XP)

其实应该是将C:\Program Files\Microsoft Office\OFFICE11里的MSWORD.OLB和XL5CHS32.OLB组件拷贝到C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin,因为在Bin目录下才有TlbImp.exe,然后利用.NET SDK命令提示工具下执行TlbImp MSWORD.OLB和TlbImp XL5CHS32.OLB ,得到Word.dll和Excel.dll;

还有一种方法是直接将Word.exe或者Excel.exe拷贝到Bin目录下,执行TlbImp Word.exe和TlbImp Excel.exe,也可以得到Word.dll和Excel.dll;这种方法的好处就是不用因为你的Office是2000,XP或者2003的不同要去找不同的*.OLB文件.

但是两种方法都只能得到Word.dll和Excel.dll,并没有Office.dll和BDIDE.dll两个文件。

其中有个奇怪的现象是两种方法得到的Word.dll的版本是一样的,都是8.3.0.0,而得到的Excel.dll的版本却不一样,TlbImp XL5CHS32.OLB得到的Excel.dll版本是1.0.0.0,TlbImp Excel.exe得到的是Excel.dll版本是1.5.0.0。

经本人验证,显然在VS 2005项目里添加1.5.0.0版本的Excel.dll引用之后的代码要简单许多,而且其属性更全面。最后终于搞明白了为什么这样,因为提供的XL5CHS32.OLB组件是Excel 5.0,而Office 2003是11.0,不过还是让我费解MS为什么这样做??

其实VS2005里面可以直接打开“添加引用”对话框点击“COM”选项卡,然后选择Microsoft Excel 11.0 Object Library的 "
上一篇 :CSS、XHTML中隐藏滚动条与设置样式
下一篇 :修改UrlRewrite以对域名进行重写