【XLL 文档翻译】【第2部分】C API 回调函数 Excel4, Excel12 (2)

如果返回值为这二种类型中的一种,你的 DLL 必需清除,并将控制权返还给 Excel。 C API 回调 操作,会在 接到到这种返回值后失效,除了 xlFree 函数。

实例

这个实例使用 Excel12 函数选择调用的单元格

\SAMPLES\EXAMPLE\EXAMPLE.C.

注意 这个函数调用一个命令宏 xlcSelect 因此只会在 XLM 宏表中调用时有效。

short WINAPI Excel12Example(void) { XLOPER12 xRes; Excel12(xlfCaller, &xRes, 0); Excel12(xlcSelect, 0, 1, (LPXLOPER12)&xRes); Excel12(xlFree, 0, 1, (LPXLOPER12)&xRes); return 1; } Excel4v/Excel12v

从 DLL/XLL 或代码资源中调用 Excel 内部的工作表函数、宏表函数或命令、或 XLL-only 特定函数或命令

所有最新版本的 Excel4v 都支持 Excel4v 函数。只有 Excel 2007 及其后续版本支持 Excel12v。

这些函数只在 DLL/XLL 回调 Excel 功能可以使用。它们还可以间接的通过 VBA 来调用。除此以外,其它的任何时间都不可以调用这两个函数。例如,它们不能在 操作系统调用 DLL时调用 DllMain 时直接调用这个函数。 DLL 创建的线程也不能调用这个函数。

Excel4 和 Excel12 接收堆栈上的可变长度参数列表,然而 上面的两个函数只接收数组形式的参数。在其它方面,这两组函数是等效的。

函数原型 int _cdecl Excel4v(int iFunction, LPXLOPER pxRes, int iCount,LPXLOPER rgx[]); int _cdecl Excel12v(int iFunction, LPXLOPER12 pxRes, int iCount,LPXLOPER12 rgx[]); 参数

iFunction (int)

一个数字类型,表明你要调用的 命令、函数 或 特殊函数。有效的 iFunction 值,参考 “Remarks” 一节。

pxRes (LPXLOPER or LPXLOPER12)

XLOPER 或 XLOPER12 类型的指针,用于保留函数的结果值。

iCount (int)

要传送给函数的参数数量。到 Excel 2003 版本,这里的数值最大为30。但是在 Excel 2007 版本,最大数值是 255。

rgx (LPXLOPER[]LPXLOPER12[])

包含要传送给函数的参数数组。数组中的所有参数必需指向 XLOPERs 或 XLOPER12s 类型。

属性值 / 返回值

这些函数的返回值 与 Excel4 和 Excel12 是相同的。

备注

当参数的数量是不是固定,使用这些函数更好。例如,当使用 xlfRegister 注册函数时,参数数量依赖于注册的函数的参数数量。这种情况下就可以使用这些函数。或者当你为 Excel4 或 Excel12 建一个包装函数时,你需要转换变量参数列表才能提供给 Excel4 或 Excel12 。而使用 Excel 4v 或 Excel12v 只需要调用一个包含了所有函数的参数数组就可以了。

实例

在 SAMPLES\FRAMEWRK\FRAMEWRK.C 包含了 Excel 和 Excel12f 函数的实例代码。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggsyy.html