我有一个旧的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)