【问题标题】:Set VB6 reference to Microsoft Word 97 (Word 2007 installed)将 VB6 引用设置为 Microsoft Word 97(已安装 Word 2007)
【发布时间】:2012-08-22 21:09:05
【问题描述】:

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

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

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

有人知道我需要做什么才能使其正常工作吗?或者我需要在我的机器上安装 Word 97 才能使用它吗?

【问题讨论】:

    标签: vb6 ms-word


    【解决方案1】:

    听起来您基本上想按照Writing Automation clients for multiple Office versions 中的建议进行操作,但忽略了有关使用后期绑定的建议。

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

    在 VC++ 文章 PRB: Automation of Office Using #import Can Fail if Multiple Versions of Office Are Installed 中,微软似乎暗示这可能是一个可行的策略,只要您引用正确的 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 块来使以后更容易返回到早期绑定。

    由于今天可能无法合法获得 MSWORD8.OLB,您还可以考虑OFF: "Built-in Constants in Visual Basic for Applications" (WC0993),它提供了包含 VB .BAS 模块的下载,该模块定义了许多旧版本 Word 和其他 Office 应用程序的常量。下载链接有效 - 至少现在有效!

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2022-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-15
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        • 2010-09-20
        相关资源
        最近更新 更多