Desenvolvimento - Office

VBA: Criando Regras no Outlook

Neste breve artigo, mostro como utilizar os novos objetos do Outlook 2007 a partir do Excel 2007 para criar regras no Outlook 2007.

por Robert Martim



Se o leitor é usuário do Outlook certamente alguma vez já recebeu e-mails indesejados. E-mails indesejados podem ser tratados de várias formas, uma dela é através de software especializado como AS (Antispam). Uma outra forma é utilizar regras do Outlook.

Regras têm diversas finalidades. Você poderia simplesmente excluir uma mensagem definitivamente ao chegar ou poderia movê-la para uma outra pasta. Você poderia ainda encaminhá-la para seu SmartPhone ou um outro endereço de e-mail qualquer:


Figura 1: Caixa de diálogo de regras do Outlook 2007

Nas versões anteriores ao Outlook 2007 não é possível criar regras utilizando VBA. O melhor que nós poderíamos fazer é criar uma classe a qual é iniciada quando o Outlook abre e esta classe processaria cada e-mail conforme os e-mails são recebidos.

O problema que temos aqui é que poderíamos receber diferentes objetos. Por exemplo, se recebemos uma tarefa, ela não é um e-mail e, portanto, não será tratada como tal e pode gerar erro no seu código o qual precisa ser tratado. Outro problema diz respeito ao sistema de segurança. Com eventos, nós precisamos acessar informações como “remetente”, “assunto”, etc, os quais caem na malha fina do sistema de segurança do Outlook:


Figura 2: Aviso de segurança do Outlook 2007

Obviamente que tal mensagem é completamente indesejável. Então, a solução é utilizar componentes tais como o Redemption para evitar a mensagem de segurança, mas mesmo assim o trabalho é penoso. Ao criarmos uma regra a partir do Excel ainda veremos tal mensagem, não obstante uma vez que a regra tenha sido implementada estamos livres de tal dor de cabeça.

Então, vamos iniciar o nosso pequeno 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:


Figura 3: Adicionando referências ao projeto VBA

Ao clicar nesta opção uma nova janela é aberta. Role a lista até encontrar as referências aos objetos do Outlook 2007:


Figura 4: Escolhendo a biblioteca a ser utilizada

Com as referências instaladas estamos prontos para escrever nosso código de criação de regras. Adicione um módulo comum ao seu projeto (Insert à Module) onde inseriremos o código abaixo:

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 é executado pela primeira vez o sistema de segurança do Outlook será ativado. Libere o acesso ao Outlook e determine o tempo máximo de uso do Outlook. Feito isso a regra será adicionada à nossa lista de regras no Outlook conforme mostra a figura:


Figura 5: Regra adicionada ao Outlook 2007

CONCLUSÃO

Neste breve artigo, mostro como utilizar os novos objetos do Outlook 2007 a partir do Excel 2007 para criar regras no Outlook 2007.

O leitor deve estar ciente que este artigo é baseado na versão Beta 2 em inglês. Como esta versão não é comercial, as informações aqui discutidas podem variar do produto final.

Robert Friedrick Martim, Expert da Comunidade Excel
Robert Martim é Economista, Formado e Pós-Graduado em Finanças pela Universidade de Londres, Microsoft MVP Excel e colunista do Linha de Código.

Conheça os e-books do autor sobre Excel:

Robert Martim

Robert Martim - Formado e Pós-Graduado em Finanças pela Universidade de Londres, Reino Unido. Diretor de TI da Faircourt Capital Limited (Reino Unido). Fornece suporte pro bono em TI à entidade de caridade Nigeriana NIDOE (Nigerians in Diaspora Organisation Europe) desde 2001. Colaborador ativo do fórum Excel Avançado do site www.juliobattisti.com.br, onde divide seu conhecimento e experiência com outros membros do espaço.
Autor do livro Excel e VBA na Modelagem Financeira: Uma abordagem prática.