Compartilhar via


xlfUnregister (Formulário 1)

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();
}

Confira também