PROBLEMA: Eventos do controle ActiveX não tem tratados quando o nível de segurança de macro do Excel está definido como alta

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: 824007
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Quando você iniciar o Microsoft Office Excel, e você abrir uma pasta de trabalho que usa uma extensão de código gerenciado, você receberá uma mensagem semelhante à seguinte:
As macros estão desativadas porque o nível de segurança é definido como alto e um certificado confiável assinada digitalmente não está anexado às macros. Para executar as macros, altere o nível de segurança para uma configuração mais baixa (não recomendada) ou solicitar as macros ser assinadas pelo autor usando um certificado emitido por uma autoridade de certificação.
A pasta de trabalho, em seguida, é aberta no modo de design e manipuladores de eventos qualquer código gerenciado para os controles Microsoft ActiveX na pasta de trabalho não serão executados.
Causa
Esse comportamento ocorre quando as seguintes condições forem verdadeiras:
  • O nível de segurança de macro no Excel é definido como alto .

    - e -
  • A pasta de trabalho contém uma Microsoft Visual Basic para projeto Applications (VBA) que não tenha sido assinados digitalmente.
Quando o nível de segurança da macro estiver definido como alto , qualquer pasta de trabalho que contém um projeto VBA não foi assinado digitalmente deve abrir no modo de design.
Como Contornar
Para contornar esse comportamento, use um dos seguintes métodos.

Método 1: Adicionar uma assinatura digital para a macro

Excel executa as macros assinadas por uma fonte confiável. Obtenha uma assinatura digital e, em seguida, adicione a assinatura digital à macro. Para adicionar a assinatura digital:
  1. Abra o arquivo que contém o projeto de macro que você deseja assinar.
  2. No menu Ferramentas , aponte para macro e, em seguida, clique em Editor do Visual Basic .
  3. No Project Explorer, clique em projeto que você deseja assinar.
  4. No menu Ferramentas , clique em Assinatura Digital .
  5. Clique em Escolher , clique no certificado e, em seguida, clique em OK . Clique em OK novamente para fechar a caixa de diálogo Certificado Digital .

Método 2: Alterar o nível de segurança de macro

Para alterar o nível de segurança da macro:
  1. No menu Ferramentas , clique em Opções .
  2. Clique na guia segurança .
  3. Em Segurança de macro , clique em Segurança de macro e, em seguida, clique na guia Nível de segurança .
  4. Na guia Nível de segurança , clique no nível de segurança que você deseja usar e, em seguida, clique em OK duas vezes.
Para obter mais informações sobre segurança de macro, clique em Ajuda do Microsoft Excel na Ajuda menu. Digite sobre segurança de macro na pesquisa caixa de texto de Assistência . Clique em Pesquisar .

Método 3: Remover o código VBA da pasta de trabalho

Se a funcionalidade que o código do VBA fornece tiver um código gerenciado equivalente, você pode passar essa funcionalidade para a extensão de código gerenciado. Após você ter transição o código, você pode remover todos os módulos e código que contém projeto do VBA da pasta de trabalho.

Quando você usa esse método, evitar o aviso de segurança e a pasta de trabalho não abre no modo de design quando o nível de segurança de macro do Excel estiver definido como alto . Se você não pode remover completamente o projeto VBA da pasta de trabalho, você pode mover somente as planilhas na pasta de trabalho para uma nova pasta de trabalho.
Mais Informações

Passos para reproduzir o problema

  1. Crie um novo projeto de pasta de trabalho do Excel:
    1. Inicie o Visual Studio .NET 2003.
    2. No menu arquivo , clique em novo e, em seguida, clique em Project .
    3. Em Projetos do Microsoft Office System , clique em Projetos do Visual Basic e clique em Pasta de trabalho do Excel .
    4. Clique em OK para iniciar o Assistente do Microsoft Office Project .
    5. Clique em Criar novo documento e, em seguida, clique em Concluir .
    6. Na janela código, localize o código a seguir:
      ' Called when the workbook is opened.Private Sub ThisWorkbook_Open() Handles ThisWorkbook.OpenEnd Sub
      substituir esse código com o seguinte código:
      ' Called when the workbook is opened.Friend WithEvents btn As MSForms.CommandButtonPrivate Sub ThisWorkbook_Open() Handles ThisWorkbook.Open    MessageBox.Show("The Open Event Fired.")    btn = Me.FindControl("CommandButton1")End Sub
    7. Na janela código, cole o código a seguir no módulo de classe:
      Private Sub btn_Click() Handles btn.Click        MessageBox.Show("Click")End Sub
    8. Pressione F5 para criar e executar o projeto.

      A pasta de trabalho é aberta no Excel e uma caixa de mensagem aparece. Clique em OK para fechar a caixa de mensagem.
  2. No Excel, aponte para barras de ferramentas no menu Exibir e, em seguida, clique em Caixa de ferramentas de controle .
  3. Adicione um Botão de comando à pasta de trabalho.
  4. Em Ferramentas de menu, aponte para macro e, em seguida, clique em segurança .
  5. Clique em Nível de segurança guia, clique em alta e, em seguida, clique em OK .
  6. Clique em Ferramentas , aponte para macro e, em seguida, clique em Editor do Visual Basic .
  7. No menu Inserir , clique em módulo .
  8. Cole o código a seguir no módulo:
    Sub a() 	MsgBox "Hello" End Sub 
  9. No menu arquivo , clique em Fechar e voltar para Microsoft Office Excel .
  10. Salvar as alterações para a pasta de trabalho e, em seguida, saia do Excel.
  11. Reinicie o Excel e, em seguida, abra a pasta de trabalho.

    A mensagem de segurança é exibida.
  12. Clique em OK para fechar a caixa de mensagem.

    A caixa de mensagem no manipulador de eventos Abrir é exibida.
  13. Clique em OK para fechar a caixa de mensagem.

    A pasta de trabalho é aberta no modo de design.
  14. Clique em CommandButton1 .

    Observe que o manipulador de eventos código gerenciado não é executado.
Referências
Para obter informações adicionais sobre como obter e usar assinaturas digitais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
217221OFF2000: Usando SelfCert para criar um certificado digital para projetos do VBA
206637OFF2000: Visão geral sobre certificados digitais
PRB OfficeErrorMessages 10049 XL2003

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 824007 - Última Revisão: 12/08/2015 03:36:30 - Revisão: 2.5

Microsoft Office Excel 2003, Microsoft Visual Studio Tools for the Microsoft Office System version 2003

  • kbnosurvey kbarchive kbmt kbprb KB824007 KbMtpt
Comentários