VBA – Auto executando macros ao abrir arquivos do Office

Postado em 02/10/2008 17:10:01 por Tomás Vásquez

É uma necessidade básica para quem está começando a programar em VBA.

Depois da criação das primeiras macros e formulários, é preciso alguma forma de executá-los sem precisar ir direto ao VBA ou simplesmente acionando o menu de macros.

Os caminhos mais tradicionais são:

  • Associar a execução de uma macro a um botão de comando ou outro componente qualquer
  • Colocar a execução de determinada macro na abertura do arquivo

Vamos tratar aqui da segundo item.

Usando o Auto_Open

Existe uma forma geral de executar esta tarefa no VBA, idenpendente de qual seja o aplicativo hospedeiro. Basta dar ao nome da macro, ou seja, o cabeçalho da função como Auto_Open.

Suponha a macro abaixo:

1
2
3
Public Sub MostraMensagem()
    MsgBox "Seja bem vindo"
End Sub

Clicar em F5 para testar o código. O resultado deve ser uma caixa de mensagem com a mensagem “Seja bem vindo”. Para mostrar esta macro na abrir um arquivo, bastaria que esta fosse renomeada para Auto_Open ao invés do nome original. Para não estragar o código, poderíamos criar uma macro de nome Auto_Open que chama a nossa macro, por exemplo:

1
2
3
Public Sub Auto_Open()
    Call MostraMensagem
End Sub

O único requisito para o funcionamento desta macro é que ela não tenha parâmetros, podendo ser um Function ou Sub e ser chamada após esta execução.

Mapeando o evento de abertura do arquivo

Este é outro método também largamente utilizado. Praticamente todos os aplicativos dotados do VBA possuem um evento que representa a abertura de um arquivo. Abaixo segue alguns exemplos do Microsoft Office:

Aplicativo Evento
Excel Workbook_Open
Word Document_Open

Alguns aplicativos são excessão, como o PowerPoint que suporta somente eventos em nível de Aplicativo, assunto não abordado aqui.

Como exemplo, usarei o Excel para mapear o evento Workbook_Open.

  • Abra o Excel
  • Acione o VBA em Ferramentas->Macro->VBA ou simplesmente Alt+F11
  • Na janela de projeto, procure o item EstaPasta_de_trabalho
  • Clique duas vezes para abrir a tela de código
  • Na caixa de listagem à esquerda superior da tela de código, selecione o item Workbook
  • Caso nada aconteça, selecio a caixa de listagem à direto superior da tela de código e selecione o item Opem
  • Isso fará com que o evento Workbook_Open seja criado automaticamente

O código gerado é parecido com este:

1
2
Public Sub Workbook_Open()
End Sub

Qualquer código colocado dentro deste procedimento será executado na abertura da pasta de trabalho.

Conclusão

Como no VBA não existe um contexto de aplicativo, onde existe um método principal de início de execução, estas rotinas auxiliam bastante quando profissionalizamos programas feitos nesta linguagem.

Bom proveito!

  1. 21 comentários para “VBA – Auto executando macros ao abrir arquivos do Office”

  2. po legal cara
    gostei da explicaçao, pra quem entende

    um abraço!

  3. Valeu!

    Só não entendi o “pra quem entende”, mas se achou legal, então tá legal!

    Abraço
    Tomás

  4. Otima dica Tomas. Preciso de um help: existe uma maneira de executar uma macro assim que seleciono uma determinada celula? ~~~~ Agradeço pela atenção, aguardo resposta no endereço dimy.santanna@gmail.com

  5. Olá Dimy,

    Worksheet_SelectionChange?

    Abraços
    Tomás

  6. Ola,

    Gostaria de saber qual o codigo usado para abrir o power point dentro de excel utilizando o VBA.

    Grato.

    Nilton

  7. Nilton,

    Sub IniciaPowerPoint()
    Call Shell(“POWERPNT”)
    End Sub

    Tomás

  8. Veio show de bola tava procurando isso a muito tempo, a minha planilha tem codigo que só é acessado por logim e tals so que antes as pessoas tinham que clicar para aparecer a tela do login agora não preciso mais disso rsrs valew …

  9. Se puder me ajudar. Como eu faço para executar uma vba através de um botão?

  10. Olá,

    Como eu faria para executar uma VBA através de um botão no Power Point?

    Agradeço a ajuda

  11. Allan,

    Ao inserir um botão de ação, selecione a opção “Executar macro” e aponte para uma Macro que já tenha criado anteriormente.

    Abraços
    Tomás

  12. Por Sandro Luiz em 18/04/2009 18:04:35 | Responder

    Alguem sabe com montar e abrir uma apresentação no Power Point atraves do Excel???
    Ficarei muito agradecido

  13. Sandro,

    A explicação foi simples demais. Pode detalhar melhor o que quer fazer?

    Abraços

    Tomás

  14. Por Kayo Leandro em 06/07/2009 22:07:48 | Responder

    Ajuda!!!
    Preciso fazer um calculo em um formulario no word.

    o formulario tem Três Caixas de combinação, cada uma delas com valores de 1 até 10.
    e também tenho uma caixa de texto comum, onde pretendo fazer o calculo.
    Problema:
    nesse caso, nas Caixas_de_combinação, a pessoa iria selecionar algum valor (pox exemplo: “Caixa_de_combinação_1″ = 1; “Caixas_de_combinação_2″ = 5; “Caixas_de_combinação_3″ = 5), e na caixa de texto comum, teria q ser feito o calculo e teria sair o resultado q seria 11.
    Gostaria de saber como calcular os valores q estão contidos nas “Caixas_de_combinação”.
    Já fiz diversas coisas, como, selecionar a opção “Calcular ao Sair” na caixa de opções das “Caixas_de_combinação”, e na caixa de texto comum, já coloquei ela como Cálculo e escrevi a “expressão” de soma exemplo: =Caixas_de_combinação_1 Caixas_de_combinação_2 “Caixas_de_combinação_3 ou =SUM(Caixas_de_combinação_1;Caixas_de_combinação_2;Caixas_de_combinação_3).

    Aguem pode me ajudar, pois já tentei de tudo e não consegui, já procurei artigos no Google e não achei nda sobre isso.

    Desde Já agradeço!

    vou deixar meu e-mail se caso queira ver o modelo do documento é só mandar um e-mail pedindo….
    kayo.oliveiras2@gmail.com

  15. Kayo,

    Se for uma formulário VBA, é preciso fazer o cálculo também por VBA. Alguma dúvida nisso?

    Claro, é preciso saber um pouco de VBA certo? ;)
    Tomás

  16. Por Kayo Leandro em 08/07/2009 23:07:19 | Responder

    Tomás Vásquez,

    Cara me desculpa, eu nem sei se eu podia postar esse topico aqui, mas já que eu postei.

    Primeiro quero agradecer por ter me respondido.

    Bem, o formulario que eu to fazendo é sem VBA, por isso que eu não to conseguindo fazer, eu já até fiz esse formulario com código VBA, mas agora tenho esse desafio, que é fazer o mesmo formulário sem VBA.
    Se puder me ajudar eu ficaria muito grato, aliás, já estou grator por ter respondido minha duvida, enfin, se quiser uma copia do documento eu te mando, é só vc me mandar um e-mail pedindo..

    Agradecido…

  17. Kayo,

    O mesmo formulário sem VBA é realmente uma proeza. Mas automações nesse nível inevitavelmente pedirão rotinas na linguagem. Sugiro que avalie a necessidade do formulário. Se for imprescindível, o VBA é inevitável.

    Abraços
    Tomás

  18. Por Kayo Leandro em 10/07/2009 23:07:25 | Responder

    Tomás Vásquez,

    Queria só agradecer pela ajuda e parebenizar pelo excelente site.

    Meus sinceros agradecimentos pela ajuda e pode ter certeza que voltarei se precisar de mais ajuda, espero poder contar com vocês para me ajudar.

    Obrigado!

  19. Por Kayo Leandro em 14/07/2009 15:07:10 | Responder

    Toda vez q eu crio um arquivo com uma macro e salvo o mesmo com senha… eu perco as macros… como que eu faço pra q isso não aconteça?

    no office 2007 tem q gravar o documento como habilitado pra macro… isso eu ja fiz… mas quando eu criptografo o documento e coloco senha.. as macros somem…

    ajuda!!!!!

  20. Tomas, eu queria abriar o formulário do excel ao executar a planilha, quao seria o código?

    Obrigado

  21. Colega,

    Se entendi bem, dentro de um dos códigos comentados no artigo, basta colocar SeuForm.Show. De qualquer forma, responderei a perguntas no fórum a partir de agora:

    http://www.tomasvasquez.com.br/forum

    Nos vemos lá!

    Tomas

  22. Kayo,

    Responderei a perguntas no fórum a partir de agora:

    http://www.tomasvasquez.com.br/forum

    Nos vemos lá!

    Tomas

Você precisa ser um usuário registrado para inserir um comentário. Faça seu login clicando aqui