Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: Excel 2013 | Office 2013 | Visual Studio
Pode ser chamado de um comando DLL ou XLL que, por sua vez, foi chamado pelo Microsoft Excel. Isso é equivalente a chamar UNREGISTER de uma planilha de macro do Excel XLM.
xlfUnregister pode ser chamado em dois formulários:
Formulário 1: cancela o registro de um comando ou função individual.
Formulário 2: descarrega e desativa uma XLL.
Chamada no Formulário 1, essa função reduz a contagem de uso de uma função ou comando DLL que foi registrado anteriormente usando xlfRegister ou REGISTER. Se a contagem de uso já estiver zero, essa função não terá efeito. Quando a contagem de uso de todas as funções em uma DLL atinge zero, a DLL é descarregada da memória.
xlfRegister (Formulário 1) também define um nome oculto que é o argumento de texto da função, pxFunctionText, e que avalia para a ID de registro da função ou do comando. Ao cancelar o registro da função, esse nome deve ser excluído usando xlfSetName para que o nome da função não seja mais listado pelo Assistente de Função. Confira mais informações em Problemas conhecidos no desenvolvimento de XLL do Excel.
Excel4(xlfUnregister, LPXLOPER pxRes, 1, LPXLOPER pxRegisterId);
Parâmetros
pxRegisterId (xltypeNum)
A ID de registro da função a ser não registrada.
Valor de propriedade/Valor de retorno
Se for bem-sucedido, retornará TRUE (xltypeBool), caso contrário, retornará FALSE.
Comentários
A ID de registro da função é retornada por xlfRegister quando a função é registrada pela primeira vez. Ele também pode ser obtido chamando a função xlfRegisterId ou a função xlfEvaluate. Observe que xlfRegisterId tenta registrar a função se ela ainda não tiver sido registrada. Por esse motivo, se você estiver apenas tentando obter a ID para que possa cancelar o registro da função, é melhor obtê-la passando o nome registrado para xlfEvaluate. Se a função não tiver sido registrada, xlfEvaluate falhará com um #NAME? Erro.
Exemplo
Consulte o código para a função fExit em \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();
}