使用microsoft office 2010生成的类型库能否在安装了office 2013的计算机上工作? 我有一个VisualC++应用程序,它使用Office COM组件上的导入来处理Office文档。应用程序依赖于用户机器上安装的Office版本。下面的示例是我为已安装的Office版本(2010)生成的Excel生成的类型库头的一部分:

使用microsoft office 2010生成的类型库能否在安装了office 2013的计算机上工作? 我有一个VisualC++应用程序,它使用Office COM组件上的导入来处理Office文档。应用程序依赖于用户机器上安装的Office版本。下面的示例是我为已安装的Office版本(2010)生成的Excel生成的类型库头的一部分:,com,ms-office,ole,Com,Ms Office,Ole,这在安装了Office2007的另一台测试机器上运行得很好,但在安装了Office2013的机器上有些东西无法正常工作。我的问题是:microsoft office的类型库是否向后兼容,以便使用2010生成的类型库可以在2007年使用。如果这是真的,我必须生成2013类型库,并使用它们编译我的应用程序,以便在2013、2010和2007年使用 谢谢您的时间。是的,类型库是向后兼容的,除非您只使用所有Office版本中可用的类型,而不是最新版本中的新成员。如果您试图呼叫旧Office版本中缺少的成

这在安装了Office2007的另一台测试机器上运行得很好,但在安装了Office2013的机器上有些东西无法正常工作。我的问题是:microsoft office的类型库是否向后兼容,以便使用2010生成的类型库可以在2007年使用。如果这是真的,我必须生成2013类型库,并使用它们编译我的应用程序,以便在2013、2010和2007年使用


谢谢您的时间。

是的,类型库是向后兼容的,除非您只使用所有Office版本中可用的类型,而不是最新版本中的新成员。如果您试图呼叫旧Office版本中缺少的成员,则会出现异常。这就是为什么我建议使用最古老的类型库,例如Office2007,如果它是min支持的版本。如果需要,您可以在运行时检查Office版本,如果代码是针对最新版本运行的,则可以调用新成员

但有些东西在装有office 2013的机器上无法正常工作

你能说得更具体些吗?你试过调试代码吗?你有例外吗


最后,您可能会发现这篇文章很有帮助

他们应该这样做,但他们没有。我们谈论的是微软,所以他们可以为所欲为。 他们确实破坏了COM接口,它不再向后兼容。 例如,如果您使用的是
Shapes.AddMediaObject
,那么您会遇到麻烦,因为它已被弃用
Shapes.AddMediaObject2


引用:

那不是类型库,只是从类型库自动生成的.tlh文件。与.tli文件(自动生成的包装函数)一起,它使COM编程更加容易。COM对象自动化模型已经兼容超过16年了。这是一项了不起的成就,但裂缝正在开始发展。当然,这是向后兼容的问题,你不能指望2010年添加的接口方法能在2007年工作。只有记录具体问题,才能得到有用的答案。
 // Created by Microsoft (R) C/C++ Compiler Version 10.00.40219.01 (e8ba858a).
//
// d:\play_ground\pimawordtopdf\release\excel.tlh
//
// C++ source equivalent of Win32 type library C:\\Program Files (x86)\\Microsoft      Office\\Office14\\EXCEL.EXE
// compiler-generated file created 11/26/14 at 09:02:55 - DO NOT EDIT!

//
// Cross-referenced type libraries:
//
//

#pragma once