2

我有一个我负责维护的旧 vb6 应用程序,它可以将 Word 文档保存、打开和打印到用户计算机上。前几天,当我们从 office 2003 切换到 office 2010 时,我开始收到抱怨说该软件将不再打开保存的报告并打印它们。删除 Office 2010 并安装 2003 可解决此问题。

处理这一切的子程序都是普通的 msdn 代码,我找不到任何可以将它与某个 Word 版本联系起来的东西。我的下一个想法可能是它的 OLE dll 参考。在哪里/如何更新对 dll 的 VB6 引用以使用新版本的 Office?

任何其他建议将不胜感激。

4

3 回答 3

1

我不确定,但作为一种猜测听起来你正在尝试使用早期绑定。如果是这样,这可能是您的问题。

在十多年的时间里,有许多 MS 知识库文章警告过这一点。例子:

http://support.microsoft.com/kb/247579

http://support.microsoft.com/kb/245115

In other words: remove all references to any version of Word, declare all of the objects As Object, and use CreateObject() or GetObject() where appropriate instead of Set Obj = New LibName.ClassName.

These KB articles are old now, and the old rules that let you get away with compiling with a reference to Word 95 and still automate Word 2002 don't seem to apply anymore. Besides needing the oldest supported version of Office installed on your dev machine, I suspect upward compatibility was broken beginning in Office 2003.

Your best bet is late binding. The performance penalty is minimal for most programs so the biggest headache is losing IntelliSense.

于 2011-04-10T05:36:57.347 回答
0

如果你只是盲目地更新参考,你可能会破坏对 Office 2003 的支持。如果这不是问题,那就去吧。

如果是,您需要缩小应用程序失败的具体位置。版本之间的自动化模型的版本之间存在一些细微差别。不是很多,但他们在那里。

最有可能的是,代码正在以某种特定于 2003 的方式执行某些操作。MS 在保持向后兼容方面做得很好,但它们不是 100%

于 2011-04-08T18:44:27.300 回答
0

要回答您的问题“在哪里/如何更新对 dll 的 VB6 引用以使用新版本的 office?”:您当然需要一台安装了 Office 2010 和 VB 6 的计算机。如果您在 VB IDE 中打开项目,您可以更改对相应 Word Library 的引用。在 VBP 文件中也注明了引用,例如像这样

Type=Exe
Reference=*\G{00020905-0000-0000-C000-000000000046}#8.0#409#C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB#Microsoft Word 8.0 Object Library
Reference=*\G{00025E01-0000-0000-C000-000000000046}#4.0#0#C:\Program Files\Common Files\Microsoft Shared\DAO\DAO350.DLL#Microsoft DAO 3.51 Object Library
Reference=*\G{420B2830-E718-11CF-893D-00A0C9054228}#1.0#0#C:\WINDOWS\system32\SCRRUN.DLL#Microsoft Scripting Runtime

然后重新编译。好吧,如果您在那里,您可以开始调试并查看详细情况以及报告失败的原因。如果这是您的问题,则无法在不重新编译的情况下更改参考。

如果是与打开、保存和打印相关的普通代码,很难想象会出现什么问题。

另一方面 - 是否有任何使用 Word 格式的“基本文件”?可能是它们具有旧格式(来自 Office 95,最近才看到)。尝试手动打开这些文件,看看会发生什么。

于 2011-04-09T02:03:51.710 回答