我使用 VS2012 用 XLL 编写的一个非常简单的函数遇到了这个问题。我曾尝试阅读 MSDN 和 Steve Dalton 的书,但我看不出我做错了什么。棘手的一点是,我需要我的函数来读取工作表单元格中的值,而不是从中调用它的单元格。该函数不接受任何参数,并返回一个整数。我已将其声明为 J#(# 表示它可以按照 Dalton 的建议调用 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 字段中的垃圾值(工作表单元格确实包含整数值)。
//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
你能解释一下出了什么问题吗?