将VB6引用设置为Microsoft Word 97(已安装Word 2007)

时间:2012-08-22 21:09:05

标签: vb6 ms-word

我需要在VB6开发项目中使用Microsoft Word 97的引用。 (这是一个很长的故事 - 简而言之,如果我使用ref到MSWord97然后我可以支持Word 97 +)。

我在开发机器上使用Microsoft Word 2007。理想情况下,如果我不能安装Word97,那就太棒了。

在VB6中,我尝试设置对C:\ Software \ Microsoft \ Office97Pro \ OFFICE \ mso97.dll(软件的路径 - 未安装)的引用,但这不起作用。我然后尝试了regsvr32 mso97.dll,但这给了我错误:mso97.dll已加载,但未找到DllRegisterServer入口点。

任何人都知道我需要做些什么才能让它发挥作用?或者我需要在我的机器上安装Word 97才能使用它?

2 个答案:

答案 0 :(得分:0)

添加对项目的引用时,请查找MS Word x.0 Object Library,其中x是您要使用的MS Word版本。我相信您可以引用比Word 2007(版本12.0)更低的版本。寻找8.0。

答案 1 :(得分:0)

听起来你基本上想按照Writing Automation clients for multiple Office versions中的建议去做,但忽略了关于使用后期绑定的建议。

涉及的类型库是MSWORD8.OLB,但我不记得是否有任何合法的方法来获取它没有Word 97或包含Word的Office 97 Edition。我不确定注册这个tylepib会对你的Word 2007安装产生什么影响,因为它们可能共享很多ClassID值。

在VC ++文章PRB: Automation of Office Using #import Can Fail if Multiple Versions of Office Are Installed中,Microsoft似乎认为只要您引用正确的OLB,这可能是一种可行的策略。对于VB6而言,这可能不像在C ++中那么严重,因为VB6不使用VC ++ #import语义来定位类型库。然后他们可能再次指的是运行时行为,因为解释最后再次暗示了后期绑定。

文章WD: How to Obtain the Word for Windows Type Library提供了Word 6和Word 7类型库(链接可能不再好)的链接,但没有提供Word 97的链接,他们建议您通过安装Word 97获得。

在任何情况下,只使用Word 97中的常量,枚举等,并对所有对象使用后期绑定,这听起来是安全的。这个“半个面包”总比没有好。您仍然可以使用早期绑定声明进行初始开发以设置“Intellisense”帮助,然后返回并将所有早期绑定对象声明更改为后期绑定As Object并将Set X = New TYPE替换为CreateObject()相应的后期#If/#Else调用,将实际强类型作为尾随注释。也可以使用条件编译{{1}}块来稍后更轻松地回到早期绑定。

由于今天合法地获取MSWORD8.OLB可能是不可能的,您可能还会考虑OFF: "Built-in Constants in Visual Basic for Applications" (WC0993)提供包含VB .BAS模块的下载,这些模块定义了许多旧版本Word和其他Office应用程序的常量。下载链接有效 - 至少目前为止!

由于命名常量是typelibs的主要原因(考虑到只有后期绑定才是真正安全的),这可能不是一个糟糕的妥协。您可以获取所需的.BAS文件,清理它(在那里必然会有一些瑕疵),甚至可以将它转换为自定义的“Generic Word”TLB,只需要稍微努力就可以包含这些常量和枚举。就此而言,有人可能已经完成了这项工作。我建议您在编写自己的“VB .BAS到ODL / IDL”编译器之前尝试一些搜索。