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 MartimRegras 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:
- Curso completo de Excel (entrega via download)
http://shop.linhadecodigo.com.br/treinamento.asp?id=356 - Fazendo o possível e o impossível com gráficos no Excel (entrega via
download)
http://shop.linhadecodigo.com.br/treinamento.asp?id=2501 - Tudo sobre o Solver no Excel
http://shop.linhadecodigo.com.br/treinamento.asp?id=352 - Programação Orientada a Objetos: uma introdução à classes no Excel
http://shop.linhadecodigo.com.br/treinamento.asp?id=363
- Data Bars para MS-AccessAccess
- Funcionalidades do Office usando Visual Studio for Office – Parte 3C#
- Funcionalidades do Office usando Visual Studio for Office - Parte 2C#
- Estenda as funcionalidades do Office com o Visual Studio for OfficeC#
- Como evitar processos pendurados na automação do ExcelOffice