Excel XLL问题与xlfeevaluate

Excel XLL问题与xlfeevaluate,excel,xll,Excel,Xll,我在使用VS2012,用XLL编写的一个非常简单的函数中遇到了这个问题。我试着阅读MSDN和史蒂夫·道尔顿的书,但我看不出我做错了什么。 棘手的一点是,我需要我的函数读取工作表单元格中的值,而不是调用它的单元格中的值。该函数不接受任何参数,并返回一个整数。我已经将它声明为J#(表示它可以按照道尔顿的建议调用XLM功能……尽管没有#我仍然会遇到同样的问题)。我没有包括我的功能声明,以节省空间,但它很简单,我不认为这是问题的原因 第一段代码运行良好。我写它只是为了建立信心 //This block

我在使用VS2012,用XLL编写的一个非常简单的函数中遇到了这个问题。我试着阅读MSDN和史蒂夫·道尔顿的书,但我看不出我做错了什么。 棘手的一点是,我需要我的函数读取工作表单元格中的值,而不是调用它的单元格中的值。该函数不接受任何参数,并返回一个整数。我已经将它声明为J#(表示它可以按照道尔顿的建议调用XLM功能……尽管没有#我仍然会遇到同样的问题)。我没有包括我的功能声明,以节省空间,但它很简单,我不认为这是问题的原因

第一段代码运行良好。我写它只是为了建立信心

//This block works correctly. A trial copied from the old Excel 97 documentation
XLOPER12 xlInput1, xlOutput2;
/* Evaluate the string "2+3" */
xlInput1.xltype = xltypeStr;
xlInput1.val.str = L"\0032+3";  //prefix with string length in Octal
Excel12(xlfEvaluate, &xlOutput2, 1, (LPXLOPER12) &xlInput1); 
//works OK, and xlOutput2 contains 5
但第二个街区不起作用。我不明白为什么。我试图从一个单元格中读取一个值,这个单元格与调用函数的单元格不同。我得到的是一个返回XLOPER12,其中包含一个错误(xltypeErr)和val.num字段中的垃圾值(工作表单元格确实包含一个整数值)


您能解释一下出了什么问题吗?

如果您试图从调用函数的单元格中读取不同的值,则需要一个参数来引用该不同的单元格。例如,在A1中,可能有“=myfunc(A2)”。然后,你的C++扩展FUNC需要声明为“JPγ”,P对应于A2信元引用参数。如果Excel可以解析“A2”引用,它将传入一个XLOPER,该值为xltypeNum、xltypeInt或xltypeStr,具体取决于A2的内容。如果没有,您可能会得到xltypeSRef

XLFE评估:这是MS文档

请注意,MS指定传递给XLFEEvaluate的字符串必须“仅包含函数,而不包含命令等效项”。我怀疑L“\003Tst”与Excel已知的任何函数都不对应。在我的Excel 2013中没有名为Tst的内置函数。你可能有一个插件提供了一个名为Tst的函数,但我猜不是。因此,请尝试将xlInput3.val.str更改为L“\006RAND()”,看看会发生什么

//This block does not work
XLOPER12 xlInput3, xlOutput3;
/* Look up the name Tst on the active sheet called Sht */
xlInput3.xltype = xltypeStr;
xlInput3.val.str = L"\003Tst";  //this also gives problems regardless of whether the string is defined as \004!Tst or \007Sht!Tst
Excel12(xlfEvaluate, &xlOutput3, 1, (LPXLOPER12) &xlInput3);  //xlOutput3 now has a type of xltypeErr, rather than the correct integer value on the worksheet