PROBLEMA: Automação suplemento função ligações a função interna do Excel com o mesmo nome

Traduções deste artigo Traduções deste artigo
ID do artigo: 286305 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você cria um automação suplemento destinado para o Microsoft Excel e você insere uma função de seu suplemento em uma planilha do Excel usando a caixa de diálogo Inserir função , o Excel vincula à função interna em vez de sua função personalizada como o nome da função corresponde ao nome de uma função interna do Excel. Isso também se aplica a funções personalizadas em outros suplementos.

Resolução

Há duas maneiras de evitar esse problema:
  • Quando você cria suplementos de automação, evite usando um nome de função que é o mesmo que uma função interna do Excel ou outra função add-in que é carregada.
  • Insira a função diretamente na célula, incluindo o ProgID do suplemento.

Mais Informações

Ligação para funções em um suplemento de automação está no final de precedência de ligação a função. Se você tiver uma função em seu suplemento automação com o mesmo nome de uma função interna do Excel, a função interna do Excel terá precedência. Visual Basic for funções de automação (VBA) em pastas de trabalho e regulares add-ins (.xla) também têm precedência sobre funções de suplemento de automação. Quando você cria suas próprias funções para uso no Excel, a Microsoft recomenda nomear suas funções com um nome que já está em uso por uma função interna do Excel.

Etapas para reproduzir o problema

criar suplementos de automação :
  1. Inicie um novo projeto AddIn no Visual Basic. Por padrão, um formulário denominado frmAddIn é adicionado para o projeto.
  2. No Project Explorer , clique com o botão direito do formulário e selecione Remover frmAddIn no menu de contexto para remover o formulário.
  3. No menu Project , selecione Propriedades MyAddin . Altere o nome do projeto para aTest1 e, em seguida, clique em OK .
  4. No Project Explorer , selecione conectar designer . Altere a propriedade Name para XLFunctions .
  5. Clique duas vezes o designer XLFunctions no Explorador de projeto . Faça as alterações seguintes as configurações de designer na guia Geral :

    -Na lista drop-down aplicativo, selecione Microsoft Excel .

    -Na lista drop-down versão do aplicativo, selecione Microsoft Excel 2002 .

    -Altere o Comportamento de carregamento inicial carregar sob demanda .
  6. Com o XLFunctions designer ainda aberta, selecione código no menu Exibir . Exclua todo o código existente no módulo. Substitua o código no módulo com o seguinte:
    Option Explicit
    
    Public Function SUM(Num1 As Variant, Num2 As Variant) As String
        On Error Resume Next
        Dim retVal As Double
        retVal = CDbl(Num1) + CDbl(Num2)
        SUM = "My Sum: " & retVal
    End Function
    
    Public Function DLLName() As String
        DLLName = App.EXEName
    End Function
    					
  7. Salve o projeto como aTest1.vbp .
  8. Crie o suplemento como aTest1.dll .
  9. Repita as etapas 1 a 8, exceto que agora utilizam aTest2 como o nome do projeto.

    Agora existem dois projetos separados, aTest1 e aTest2.
teste os suplementos de automação no Excel :
  1. Inicie o Microsoft Excel.
  2. No menu Ferramentas , clique em Add-Ins para exibir a caixa de diálogo Add-Ins.
  3. Clique em automação , selecione aTest1.XLFunctions na lista e, em seguida, clique em OK . Verifique aTest1.XLFunctions e clique em OK para fechar a caixa de diálogo Add-in.
  4. Vá para a célula e, no menu Inserir , clique em função . Na lista suspensa Categoria, selecione aTest1.XLFunctions . Em seguida, selecione a função soma na caixa de listagem e clique em OK . Digite 10 para Num1 e inserir 20 para Num2 e em seguida, clique em OK . resultado : O Assistente de função usado a função soma interna.

  5. Na célula A2, digite a seguinte fórmula: =aTest1.XLFunctions.SUM(10,20)

    resultado : "Meu soma: 30" é exibido na célula. Isso é a função soma do seu Add-in de automação. No entanto, observe que a fórmula lê:

    =SUM(10,20) para a célula A2.

  6. Edite a fórmula em A2 para somar os números 10, 40.

    resultado : A2 de célula agora está vinculado a função soma interna como resultado de digitar a fórmula. Para usar a função soma personalizada, você precisa incluir o ProgID do add - in quando você inserir a fórmula: = aTest1.XLFunctions.SUM(10,40).
  7. No menu Ferramentas , clique em Add-Ins para exibir a caixa de diálogo Add-Ins .
  8. Clique em automação , selecione aTest2.XLFunctions na lista e, em seguida, clique em OK . Verifique aTest2.XLFunctions e, em seguida, clique em OK para fechar a caixa de diálogo Add-ins .
  9. Vá para a célula B1 e, no menu Inserir , clique em função . Na lista suspensa Categoria, selecione aTest1.XLFunctions , selecione a função Nome_da_dll na caixa de listagem e, em seguida, clique em OK duas vezes.
  10. Vá para a célula B2 e, no menu Inserir , clique em função . Na lista suspensa Categoria, selecione aTest2.XLFunctions , selecione a função Nome_da_dll na caixa de listagem e, em seguida, clique em OK duas vezes.

    resultado : célula B2 é usando a função de Nome_da_dll de aTest1.dll, resultando em ambas as células B1 e B2 exibindo aTest1.

Referências

Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
285337COMO: Criar um suplemento de automação para funções do Excel 2002

Propriedades

ID do artigo: 286305 - Última revisão: segunda-feira, 24 de fevereiro de 2014 - Revisão: 4.2
A informação contida neste artigo aplica-se a:
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbprb kbprogramming KB286305 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 286305

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com