Arquivo da tag: Auto_Open

VBA – Cancelando a execução do Auto_Open e eventos de Inicialização

Auto_Open

Macros são ótimas, salvam nossas vidas. Macros são demais! Mas, dependendo do caso, eles podem torrar a paciência!

Esse é o caso das macros Auto_Open, que executam automaticamente quando arquivos do Office (Excel, Word, PowerPoint) ou qualquer outra coisa que execute VBA. O problema é quando são aquelas planilhas que executam aplicativos inteiros, abrem forms, escondem a janela do programa principal, desativam atalhos e praticamente inutilizam o mesmo, sendo impossível fazer qualquer outra coisa, mesmo que seja uma simples verificação numa macro, por exemplo.

Desativar as macros não é uma opção, pois você pode precisar alterar o código e testá-lo em seguida. Fechar e abrir o arquivo não é uma opção viável.

A boa notícia é que existe um jeito simples de desativar a execução desses código. A notícia ótima é que é simples demais de fazê-lo!

Basta que na abertura do arquivo, no momento de ativar as macros (imagem abaixo), basta fazê-lo segurando a tecla Shitf.

Habilitar Macros

Com isso, a única diferença é que as macros Auto_Open não serão executadas. Se necessário, isso pode ser feito manualmente mais tarde.

Simples, rápido e economiza um bocado de tempo.

Bom proveito!

 

 

VBA – Auto executando macros ao abrir arquivos do Office

É 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!