VBA Outlook - Usando o VBA no Outlook - Using Visual Basic for Applications in Outlook

VBA Outlook - Usando o VBA no Outlook - Using Visual Basic for Applications in Outlook


A utilização do VBA (Visual Basic for Applications) no Microsoft Office Outlook permite-nos usufruir certo conforto no que diz respeito a soluções práticas e ágeis. Através dele podemos desenvolver algoritmos que respondam a eventos do Microsoft Office Outlook, permitindo-nos automatizar tarefas comuns como organizar as janelas quando o Outlook for iniciado.

O VBA no Outlook permitirá que tiremos proveito máximo do modelo de objetos do Microsoft Office Outlook, incluindo a vasta gama de eventos em nível de aplicativo, sem a necessidade de executar uma aplicação externa (como um outro aplicativo do Microsoft Office ou um aplicativo desenvolvido usando o Microsoft Visual Basic), ou mesmo scripts usando o Microsoft Visual Basic Scripting Edition (VBScript). O VBA do Outlook está sempre disponível no aplicativo; e um item não precisa necessariamente estar aberto para executarmos um código.

Todo o código Visual Basic for Applications está contido em um projeto. O projeto estará associado a um usuário em particular, para que todos os usuários que executam o Outlook em um computador possam personalizar o seu Outlook, satisfazendo suas próprias necessidades. Um projeto pode conter módulos de código e Forms de usuário (note que os Forms de usuário não são os mesmos formulários do Outlook).

Poderá usar o Editor do Visual Basic no Outlook para desenvolver e testar o código que será copiado para um aplicativo standalone Visual Basic ou Visual Basic for Applications em outro aplicativo do Microsoft Office.

Gerenciando Múltiplos Projetos VBA



O Microsoft Outlook não suporta mais do que um projeto Visual Basic for Applications, Project1, ao mesmo tempo. Você não pode adicionar e executar um outro projeto no Editor Visual Basic, simultaneamente. Project1 será armazenado em seu disco rígido como VbaProject.OTM; cada usuário no mesmo computador pode ter uma cópia do VbaProject.OTM armazenados. 



Por poder executar apenas um projeto Visual Basic for Applications de cada vez, cuide em sair do Outlook antes de executar um projeto diferente, renomeie o VbaProject.OTM atual com um nome de arquivo diferente, o nome do projeto que você deseja executar como VbaProject.OTM , e reinicie o Outlook para executá-lo. 

O código do Outlook Visual Basic for Applications foi concebido para ser um ambiente de desenvolvimento pessoal. Não foi projetado para ser implantado ou distribuído. Para mover um projeto de um computador para outro, por exemplo, movendo o projeto a partir de seu computador de trabalho para o seu computador de casa, pode exportar os formulários e os módulos de código a partir do computador do trabalho e importá-los para o computador de casa. Também pode copiar e colar o código fonte do projeto para Project1 no computador de casa usando o Editor do Visual Basic.

Se estiver desenvolvendo uma solução que pretende distribuir para algumas pessoas, deve converter seu código Visual Basic for Applications em um Outlook COM Add-in. No entanto, o desenvolvimento de um COM Add-in normalmente requer conhecimentos de programação consideravelmente maior do que criar uma macro, por isso, se o projeto Visual Basic for Applications for relativamente simples, e não houver muitas pessoas que precisem usá-lo, você pode querer enviar-lhes o código com instruções sobre como configurá-lo.


Código na prática 


Certamente já recebeu e-mails indesejados, estes podem ser tratados de várias formas, sendo uma delas através de software especializado como um AntiSPAM, outra forma é por utilizar as regras do Microsoft Outlook.

As regras foram desenvolvidas para diversas finalidades, desde poder simplesmente excluir uma mensagem definitivamente ou movê-la para outra pasta. Poderia até mesmo encaminhá-la a outro endereço de e-mail qualquer.


outlook_img1.PNG


Nas anteriores versões do Outlook não era possível criar regras utilizando VBA. O melhor que poderíamos fazer era criar uma classe iniciada quando o Outlook abrisse e esta processaria cada e-mail conforme fossem recebidos.


O problema encontrado aqui é que podemos receber diferentes objetos. Por exemplo, ao recebermos uma tarefa, esta pode não ser necessariamente um e-mail e, portanto, não será tratada como tal, podendo gerar erro no seu código, o qual precisará ser tratado. Outro possível problema diz respeito ao sistema de segurança. Ao utilizarmos eventos, precisaremos acessar informações como "remetente", "assunto", etc, os quais caem na malha fina do sistema de segurança do Microsoft Outlook.


outlook_img2.PNG


Concorda que esta mensagem é completamente indesejável. Então, a solução será utilizar componentes tais como o Redemption para evitá-la, e mesmo assim o trabalho será penoso. Ao criarmos um evento a partir do MS Excel, por exemplo, ainda veremos tal mensagem, não obstante uma vez que a regra tenha sido implementada estaremos livres de tal dor de cabeça.


Iniciando o projeto 


Abra o Excel 2007 e em seguida acesse o VBE – Visual Basic Editor (pressione Alt+F11). Aqui, vá a Tools à References para instalar as referências ao Outlook 2007.


outlook_img4.PNG

Sub CriarRegra()

' Declaração dos objetos utilizados no código

Dim appOutlook As Outlook.Application
Dim cRegras As Outlook.Rules
Dim minhaRegra As Outlook.Rule
Dim acaoMoverPara As Outlook.MoveOrCopyRuleAction
Dim condicaoDe As Outlook.ToOrFromRuleCondition
Dim meuInbox As Outlook.Folder
Dim pastaDestino As Outlook.Folder

' Instanciamento dos objetos
Set appOutlook = New Outlook.Application
Set meuInbox = appOutlook.Session.GetDefaultFolder(olFolderInbox)
Set pastaDestino = meuInbox.Folders('TRABALHO')
Set cRegras = appOutlook.Session.DefaultStore.GetRules()
Set minhaRegra = cRegras.Create('Minha Regra Teste', olRuleReceive)
Set condicaoDe = minhaRegra.Conditions.From

' Com a condição
With condicaoDe

' Habilitar a condição
.Enabled = True

' Adicionar remetente da mensagem
' Aqui, utilizo o 'nome amigável' que aparece no meu catálogo de
' endereços de e-mail
.Recipients.Add ('Robert Martim')
' Resolver os remetentes para saber se são válidos
.Recipients.ResolveAll

End With

' Determina o tipo de ação. Neste caso será 'Mover para pasta'
' (MoveToFolder)

Set acaoMoverPara = minhaRegra.Actions.MoveToFolder

' Com a ação
With acaoMoverPara

' Habilitar a ação
.Enabled = True

' Determinar a pasta de destino
.Folder = pastaDestino

End With

' Salva a regra na lista de regras do Outlook
cRegras.Save

End Sub



Conforme já observado, quando este código for executado pela primeira vez o sistema de segurança do Microsoft Outlook será ativado. Libere o acesso ao Outlook e determine o tempo máximo de uso deste. Feito isso a regra será adicionada à nossa lista de regras conforme mostra a figura:


outlook_img5.PNG




Referências: MSDN, Linhadecodigo.com.br, Robert Martin


Envie seus comentários e sugestões e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

✔ Brazil SFE®✔ Brazil SFE®´s Facebook´s Profile  Google+   Author´s Professional Profile  ✔ Brazil SFE®´s Pinterest       ✔ Brazil SFE®´s Tweets

2 comentários:

  1. Olá Tudo bem?
    É possível colocar uma condição, por exemplo:
    IF = XXX@gmail.com then
    envie o e-mail para a pasta XXXX
    Elsif = YYYY@gmail.com then
    envie o e-mail para a pasta YYYY
    end if

    Parabéns pelo Blog.

    ResponderExcluir
  2. boa tarde. Verifiquei nas referencias do VBA Project do meu excel, e não consta a opção do Microsoft Outlook 16.0 Object Project na listagem. Meu excel é o 2016. Como faço para inseri-lo?

    ResponderExcluir

diHITT - Notícias