gpt4 book ai didi

c++ - 如何让 C++ 应用程序在不同的 MS office 版本之间切换?

转载 作者:太空狗 更新时间:2023-10-29 23:16:52 26 4
gpt4 key购买 nike

我有一个旧的 MFC 工具可以将 xls 文件转换为 txt。它是为某些特定的数据结构而设计的,并且不容易用新的框架(例如Qt)重写它。

该应用程序适用于 excel,并且有文件“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 Files\Microsoft Shared\OFFICE12\mso.dll" \
rename("DocumentProperties", "DocumentPropertiesXL") \
rename("RGB", "RBGXL")
#import "c:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\vbe6ext.olb"
#import "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE" \
rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") \
rename("DocumentProperties", "DocumentPropertiesXL") \
rename("ReplaceText", "ReplaceTextXL") \
rename("CopyFile", "CopyFileXL") no_dual_interfaces
#endif

最佳答案

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

然后,您可以将解决方案设置为为每个 Uses_​​MSOXXXX 宏编译一个版本的 dll。

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

关于c++ - 如何让 C++ 应用程序在不同的 MS office 版本之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21573719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com