Compartir a través de


xlfEvaluate

Hace referencia a: Excel 2013 | Office 2013 | Visual Studio

Usa el analizador de Microsoft Excel y el evaluador de funciones para evaluar cualquier expresión que se pueda escribir en una celda de hoja de cálculo.

Excel12(xlfEvaluate, LPXLOPER12 pxRes, 1, LPXLOPER12 pxFormulaText);

Parameters

pxFormulaText (xltypeStr)

Cadena que se va a evaluar. Un signo igual a la izquierda (=) es opcional. La cadena puede ser cualquier texto que se pueda escribir legalmente en una hoja de cálculo o una celda de hoja de macros.

Valor de la propiedad/valor devuelto

Devuelve el resultado de evaluar la cadena que puede ser cualquiera de los tipos xltypeNum, xltypeStr, xltypeBool, xltypeErr, xltypeNil, xltypeMulti.

Comentarios

La cadena solo puede contener funciones, no equivalentes de comandos. Es equivalente a presionar F9 desde la barra de fórmulas. Si se llama a xlfEvaluate desde una función de hoja de cálculo XLL que se ha registrado como segura para subprocesos, la expresión solo debe contener funciones seguras para subprocesos.

El uso principal de la función xlfEvaluate es permitir que los archivos DLL descubran el valor asignado a un nombre definido que se encuentra en una hoja o en un nombre oculto definido dentro del archivo DLL. Tenga en cuenta que, dentro de un archivo DLL/XLL, un nombre de hoja de cálculo debe tener como prefijo al menos un signo de exclamación (!) para asegurarse de que se interpreta como externo al archivo DLL. Para obtener más información, vea Evaluación de nombres y otras expresiones de fórmula de hoja de cálculo.

xlfEvaluate no se puede usar para evaluar las referencias a una hoja externa que no está abierta.

Ejemplo

En este ejemplo se usa xlfEvaluate para convertir el texto "! B38" al contenido de la celda B38.

\SAMPLES\EXAMPLE\EXAMPLE.C. Esta función llama a una macro de comandos (xlcAlert) y funcionará correctamente solo cuando se llame desde una hoja de macros o como un comando de 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;
}

Vea también