xlfEvaluate
Aplica-se a: Excel 2013 | Office 2013 | Visual Studio
Usa o analisador e o avaliador de funções do Microsoft Excel para avaliar qualquer expressão que possa ser inserida em uma célula de planilha.
Excel12(xlfEvaluate, LPXLOPER12 pxRes, 1, LPXLOPER12 pxFormulaText);
Parâmetros
pxFormulaText (xltypeStr)
A cadeia de caracteres a ser avaliada. Um sinal de igual líder (=) é opcional. A cadeia de caracteres pode ser qualquer texto que possa ser inserido legalmente em uma planilha ou célula de planilha de macro.
Valor de propriedade/Valor de retorno
Retorna o resultado da avaliação da cadeia de caracteres que pode ser qualquer um dos tipos xltypeNum, xltypeStr, xltypeBool, xltypeErr, xltypeNil, xltypeMulti.
Comentários
A cadeia de caracteres pode conter apenas funções, não equivalentes de comando. É equivalente a pressionar F9 da barra de fórmulas. Se xlfEvaluate for chamado de uma função de planilha XLL que foi registrada como thread safe, a expressão deve conter apenas funções de thread-safe.
O uso primário da função xlfEvaluate é permitir que os DLLs descubram o valor atribuído a um nome definido que está em uma planilha ou em um nome oculto definido dentro da DLL. Observe que, dentro de uma DLL/XLL, um nome de planilha deve ser prefixado com pelo menos um ponto de exclamação (!) para garantir que ele seja interpretado como externo à DLL. Para obter mais informações, consulte Avaliando nomes e outras expressões de fórmula de planilha.
XlfEvaluate não pode ser usado para avaliar referências a uma planilha externa que não está aberta.
Exemplo
Este exemplo usa xlfEvaluate para coagir o texto "! B38" para o conteúdo da célula B38.
\SAMPLES\EXAMPLE\EXAMPLE.C
. Essa função chama uma macro de comando (xlcAlert) e funcionará corretamente somente quando chamada de uma planilha de macro ou como um comando macro.
short WINAPI EvaluateExample(void)
{
XLOPER12 xFormulaText, xRes, xRes2, xInt;
xFormulaText.xltype = xltypeStr;
xFormulaText.val.str = L"\004!B38";
Excel12(xlfEvaluate, &xRes, 1, (LPXLOPER12)&xFormulaText);
xInt.xltype = xltypeInt;
xInt.val.w = 2;
Excel12(xlcAlert, &xRes2, 2, (LPXLOPER12)&xRes, (LPXLOPER12)&xInt);
Excel12(xlFree, 0, 1, (LPXLOPER12)&xRes);
Excel12(xlFree, 0, 1, (LPXLOPER12)&xRes2);
return 1;
}