如何在不同的MS Office版本之间进行C 应用程序切换



我有一个旧的MFC工具将XLS文件转换为TXT。它是为某些某些数据结构而设计的,并且不容易使用新框架(例如QT)进行重写。

该应用程序可与Excel一起使用,并且有file'office.h',其中定义了Office版本:

// Office.h
//#define Uses_MSO97
//#define Uses_MSO2000
//#define Uses_MSO2002
//#define Uses_MSO2003
//#define Uses_MSO2007
#define Uses_MSO2010

问题是:如何使该应用程序定义计算机上存在哪个MSO版本?

我会说,我可以访问源代码。宏用作:

#ifdef Uses_MSO2007
#import "C:Program Files (x86)Common FilesMicrosoft SharedOFFICE12mso.dll" 
    rename("DocumentProperties", "DocumentPropertiesXL") 
    rename("RGB", "RBGXL")
#import "c:Program Files (x86)Common Filesmicrosoft sharedVBAVBA6vbe6ext.olb"
#import "C:Program Files (x86)Microsoft OfficeOffice12EXCEL.EXE" 
    rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") 
    rename("DocumentProperties", "DocumentPropertiesXL") 
    rename("ReplaceText", "ReplaceTextXL") 
    rename("CopyFile", "CopyFileXL") no_dual_interfaces
#endif

您应该做的第一件事是将代码提取到.dll。

然后,您可以设置解决方案以编译每个用途的DLL版本。MSOXXXX宏。

在应用程序中,您可以使用注册表键来确定已安装的Office版本,然后动态加载与客户端版本Office版本相关的DLL。(使用LoadLibrary)

相关内容

最新更新