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

将VB6引用设置为Microsoft Word 97(已安装Word 2007),vb6,ms-word,Vb6,Ms Word,我需要在VB6开发项目中使用对Microsoft Word 97的引用。(说来话长——简而言之,如果我使用MSWord97的ref,那么我就可以支持Word 97+) 我在我的开发机器上使用MicrosoftWord2007。理想情况下,如果我不安装Word97,那就太好了 在VB6中,我试图设置对C:\Software\Microsoft\Office97Pro\OFFICE\mso97.dll(软件路径-未安装)的引用,但没有成功。然后,我尝试了regsvr32 mso97.dll,但出现了

我需要在VB6开发项目中使用对Microsoft Word 97的引用。(说来话长——简而言之,如果我使用MSWord97的ref,那么我就可以支持Word 97+)

我在我的开发机器上使用MicrosoftWord2007。理想情况下,如果我不安装Word97,那就太好了

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


有人知道我需要做些什么才能让它工作吗?或者我需要在我的计算机上安装Word 97才能使其工作?

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

听起来您基本上希望按照中的建议执行,但忽略了有关使用后期绑定的建议

涉及的类型库是MSWORD8.OLB,但我想不起是否有任何合法的方法可以在没有Word 97或Office 97版本(包括Word)的情况下获取它。我也不确定注册这个tylepib对您的Word 2007安装有什么影响,因为它们可能共享许多ClassID值

在VC++文章中,微软似乎建议,只要您参考适当的OLB,这可能是一个可行的策略。对于VB6来说,这可能不是一个问题,因为VB6不使用VC++的导入语义来定位类型。然后,他们可能再次提到运行时行为,因为解释的结论是再次建议延迟绑定

这篇文章提供了Word 6和Word 7 typelibs的链接(链接可能不再有用),但Word 97没有链接,他们建议您通过安装Word 97获得这些链接

在任何情况下,使用Word 97中的常量、枚举等并对所有对象使用后期绑定听起来都是安全的。这“半块面包”总比没有好。您仍然可以使用geet“Intellisense”assistance的早期绑定声明进行初始开发,然后返回并将所有早期绑定对象声明更改为late bound
As object
,并用相应的late bound
CreateObject()
调用替换
Set X=New TYPE
,将实际的强类型保留为尾随注释。还可以使用条件编译
#If/#Else
块,使以后更容易返回到早期绑定

既然合法地获得MSWORD8OLB可能是不可能的,你也可以考虑提供一个包含VB.BAS模块的下载,这些模块定义了许多旧版本的Word和其他Office应用程序的常量。下载链接可以工作-至少从现在开始

由于命名常量是typelibs的主要原因(考虑到只有后期绑定才是真正安全的),这可能不是一个坏的折衷方案。您可以获取所需的.BAS文件,清理它(其中肯定有一些缺点),甚至可以将其转换为只包含这些常量和枚举的自定义“通用字”TLB。就这一点而言,可能已经有人做了这项工作。不过,我建议您在编写自己的“VB.BAS到ODL/IDL”编译器之前先尝试一些搜索