xlfUnregister (Formulario 1)
Hace referencia a: Excel 2013 | Office 2013 | Visual Studio
Se puede llamar desde un comando DLL o XLL al que ha llamado Microsoft Excel. Esto equivale a llamar a UNREGISTER desde una hoja de macros XLM de Excel.
xlfUnregister se puede llamar de dos formas:
Formulario 1: Anula el registro de un comando o función individuales.
Formulario 2: Descarga y desactiva un XLL.
Llamada en el formulario 1, esta función reduce el número de usos de una función o comando DLL que se registró anteriormente mediante xlfRegister o REGISTER. Si el recuento de uso ya es cero, esta función no tiene ningún efecto. Cuando el recuento de uso de todas las funciones de un archivo DLL alcanza cero, el archivo DLL se descarga de la memoria.
xlfRegister (Formulario 1) también define un nombre oculto que es el argumento de texto de la función, pxFunctionText, y que se evalúa como el identificador de registro de la función o comando. Al anular el registro de la función, este nombre debe eliminarse mediante xlfSetName para que el Asistente para funciones ya no muestre el nombre de la función. Para obtener más información, consulta Problemas conocidos en el desarrollo de XLL de Excel.
Excel4(xlfUnregister, LPXLOPER pxRes, 1, LPXLOPER pxRegisterId);
Parameters
pxRegisterId (xltypeNum)
Identificador de registro de la función que se va a anular el registro.
Valor de la propiedad/valor devuelto
Si se ejecuta correctamente, devuelve TRUE (xltypeBool), de lo contrario, devuelve FALSE.
Comentarios
XlfRegister devuelve el identificador de registro de la función cuando la función se registra por primera vez. También se puede obtener llamando a la función xlfRegisterId o a la función xlfEvaluate. Tenga en cuenta que xlfRegisterId intenta registrar la función si aún no se ha registrado. Por este motivo, si solo intenta obtener el identificador para que pueda anular el registro de la función, es mejor obtenerla pasando el nombre registrado a xlfEvaluate. Si la función no se ha registrado, xlfEvaluate produce un error con un #NAME? Error.
Ejemplo
Vea el código de la función fExit en \SAMPLES\GENERIC\GENERIC.C
.
int WINAPI fExit(void)
{
XLOPER12 xDLL, // The name of this DLL //
xFunc, // The name of the function //
xRegId; // The registration ID //
int i;
//
// This code gets the DLL name. It then uses this along with information
// from g_rgFuncs[] to obtain a REGISTER.ID() for each function. The
// register ID is then used to unregister each function. Then the code
// frees the DLL name and calls xlAutoClose.
//
// Make xFunc a string //
xFunc.xltype = xltypeStr;
Excel12f(xlGetName, &xDLL, 0);
for (i = 0; i < g_rgWorksheetFuncsRows; i++)
{
xFunc.val.str = (LPWSTR) (g_rgWorksheetFuncs[i][0]);
Excel12f(xlfRegisterId,&xRegId,2,(LPXLOPER12)&xDLL,(LPXLOPER12)&xFunc);
Excel12f(xlfUnregister, 0, 1, (LPXLOPER12) &xRegId);
}
for (i = 0; i < g_rgCommandFuncsRows; i++)
{
xFunc.val.str = (LPWSTR) (g_rgCommandFuncs[i][0]);
Excel12f(xlfRegisterId,&xRegId,2,(LPXLOPER12)&xDLL,(LPXLOPER12)&xFunc);
Excel12f(xlfUnregister, 0, 1, (LPXLOPER12) &xRegId);
}
Excel12f(xlFree, 0, 1, (LPXLOPER12) &xDLL);
return xlAutoClose();
}