Artigos de Experts

Robert Martim

Criando regras no Outlook 2007 a partir do Excel
Por: Robert Martim, Expert da Comunidade Excel
Publicado em: 14 de Setembro de 2006


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, colunista dos sites Linha de Código.

Robert é autor do livro Excel & VBA na Modelagem Financeira: Uma Abordagem Prática e autor de vários treinamentos voltados para o Office em especial Excel, Access e utilização de VBA. Forneceu suporte pro bono em TI à entidade de caridade Nigeriana NIDOE (Nigerians in Diaspora Organisation Europe) entre 2001 e 2004.


Início da páginaInício da página