如何从c + +加载项获得excel版本

我有一个c + +非托pipe项目,其输出是一个.xll文件,这是一个在启动时由excel加载的加载项,这个加载项可以在两个版本,Excel 2003和Excel 2007中工作。

现在,我需要做的就是获取用户实际使用的用于加载项的excel实例的版本。

有人可以build议我如何得到它?

谢谢

您可以调用Excel4(xlfGetWorkspace,&version,1,&arg),其中arg是一个数字XLOPER设置为2,version是一个stringXLOPER,然后可以强制为一个整数。

Excel 2007的结果是12。

你可以在xlAutoOpen中做到这一点。

这可能是脱离主题的,但GetFileVersionInfo函数将返回VERSION_INFO结构,您可以在其中使用VerQueryValue函数来检索文件版本。 缺点是你必须find可执行文件的path,如果你有Excel实例的句柄,可以用GetModileFileName函数完成。

Len Holgate给出了正确的答案,以找出正在使用的Excel版本号。 以下是一些示例代码:

xloper xlstrVersion, xlintVersion, xlintParam; // supply a parameter with value 2 to read the Excel version number as a string xlintParam.xltype = xltypeInt; xlintParam.val.w = 2; int xlret = Excel4(xlfGetWorkspace, &xlstrVersion, 1, &xlintParam); // now use the xlCoerce function to convert the version string to an integer xlintParam.val.w = xltypeInt; xlret = Excel4(xlCoerce, &xlintVersion, 2, &xlstrVersion, &xlintParam); const int ExcelVersion = xlintVersion.val.w; const bool ExcelVersion12Plus = ExcelVersion >= 12; 

如果您只需要将Excel版本12与早期版本进行区分,请使用XLCallVer函数,如下所示:

 const bool ExcelVersion12Plus = (0x0c00 == XLCallVer());