Outlook: aplica regras à mensagem atual?

2

O KMail tem um recurso realmente útil: você pode definir uma série de regras que só são executadas quando você pressiona um atalho de teclado, e somente nas mensagens destacadas. Isso me permite ler uma mensagem quando ela chega na caixa de entrada e arquivá-la com um pressionamento de tecla.

Como posso replicar isso no Outlook? Possivelmente algum script VBA acionado por um pressionamento de tecla que executa todas as regras contra todas as mensagens atualmente selecionadas?

    
por jl6 09.10.2011 / 11:57

5 respostas

1

Sim, você pode fazer isso, mas precisa ser um pouco complicado. A visão geral das etapas: crie regras de arquivamento que procurem uma categoria e, em seguida, faça um botão executar uma macro para alterar as mensagens selecionadas para essa categoria e, em seguida, execute as regras. Veja a resposta completa sobre esta questão, incluindo o código macro ...

Execução rápida de regras do Outlook sob demanda?

Eu fiz a minha resposta um pouco mais envolvida, nomeando as regras baseadas na categoria com um prefixo para que elas pudessem ser executadas especificamente pela macro, mas isso é algo opcional.

    
por 08.07.2015 / 05:40
0

Qual é o tamanho da sua pasta? Você pode Executar regras manualmente , mas isso se aplica a toda a pasta, mas imagino que isso pode ser muito lento se a sua pasta tiver um grande número de mensagens.

Esse link descreve o uso de 'Gerenciar regras & Alertas ' na guia Arquivo para' Executar regras agora '.

    
por 09.10.2011 / 12:10
0

Infelizmente, não há como executar as regras do Outlook nas mensagens selecionadas. Apenas em pastas. :-( Mesmo usando Modelo de Objeto do Outlook no VBA.

    
por 20.10.2011 / 08:27
0

Você pode se ajudar com uma rotina auxiliar como esta:

Public Sub TestMessageRule()
    '  Routine to test Mail Handlers MessageRule()'
    '  without incoming mail messages
    '  select an existing mail before executing this routine
    Dim objItem As Object
    Dim objMail As Outlook.mailItem
    Dim started As Long

    For Each objItem In Application.ActiveExplorer.Selection
        If TypeName(objItem) = "MailItem" Then
            Set objMail = objItem

                '  add the following declaration at the header:
                '  Private Declare Function GetTickCount Lib "kernel32.dll" () As Long
                started = GetTickCount()
                MessageRule objMail

                ' showCheckerMail objMail.BillingInformation
                Debug.Print "elapsed " & (GetTickCount() - started) / 1000# & "s"
        End If
    Next
End Sub
    
por 01.03.2013 / 13:26
0

A resposta é não e sim. Não às mensagens, sim às mensagens que você move para uma pasta.

O VBA básico usado em muitos sites link

Sub RunAllInboxRules()
    Dim st As Outlook.Store
    Dim myRules As Outlook.Rules
    Dim rl As Outlook.Rule
    Dim count As Integer
    Dim ruleList As String
    'On Error Resume Next

    ' get default store (where rules live)
    Set st = Application.Session.DefaultStore
    ' get rules
    Set myRules = st.GetRules

    ' iterate all the rules
    For Each rl In myRules
        ' determine if it's an Inbox rule
              If rl.RuleType = olRuleReceive And rl.IsLocalRule = True Then
            ' if so, run it
            rl.Execute ShowProgress:=True
            count = count + 1
            ruleList = ruleList & vbCrLf & rl.Name
        End If
    Next

    ' tell the user what you did
    ruleList = "These rules were executed against the Inbox: " & vbCrLf & ruleList
    MsgBox ruleList, vbInformation, "Macro: RunAllInboxRules"

    Set rl = Nothing
    Set st = Nothing
    Set myRules = Nothing
End Sub

Se você quiser executá-lo na pasta para a qual você moveu a (s) mensagem (s), em vez da Caixa de entrada, especifique essa pasta.

link

Digamos que você crie uma pasta na Caixa de entrada chamada "RunRules"

Depois de mover a (s) mensagem (s) para a pasta:

Set fldRunRules = st.GetDefaultFolder(olFolderInbox).Folders("RunRules")

rl.Execute Folder:=fldRunRules
    
por 01.11.2014 / 17:05