Outlook: применить правила к текущему сообщению?

KMail имеет действительно полезную функцию: вы можете определить ряд правил, которые запускаются только при нажатии сочетания клавиш, а затем только на выделенных сообщениях. Это позволяет мне прочитать сообщения в папке "Входящие", а потом с одной клавиши.

Как я могу повторить это в Outlook? Возможно, какой-то сценарий VBA, вызванный нажатием клавиши, который выполняет все правила против всех сообщений, выбранных в данный момент?

2
задан jl6
26.11.2022 3:56 Количество просмотров материала 2701
Распечатать страницу

5 ответов

Да, вы можете сделать это, но вы должны быть немного хитрой. Обзор шагов: сделайте правила подачи, которые ищут категорию, затем сделайте кнопку Запустить макрос, чтобы изменить сообщения, выбранные в эту категорию, а затем запустить правила. См. полный ответ на этот вопрос, включая код макроса...

быстро работает правила Outlook по требованию?

Я сделал свой ответ там немного более сложным, назвав правила на основе категории с префиксом, чтобы они может запускаться специально макросом, но это несколько необязательно.

1
отвечен Saulysw 2022-11-27 11:44

насколько велика ваша папка? Ты можешь выполнить правила вручную, но это относится ко всей папке, но я полагаю, что это может быть очень медленно, если ваша папка имеет большое количество сообщений.

эта ссылка описывает с помощью "Управление Правилами И Оповещениями" на вкладке Файл, чтобы выполнить правила'.

0
отвечен Clare Macrae 2022-11-27 14:01

к сожалению, невозможно запустить правила Outlook для выбранных сообщений. Только по папкам. :- (Даже с помощью Объектная Модель Outlook в VBA.

0
отвечен thims 2022-11-27 16:18

вы можете помочь себе с помощью вспомогательной процедуры, такие как этот:

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
0
отвечен Axel Kemper 2022-11-27 18:35

ответ-нет и да. Нет для сообщений, да для сообщений, перемещаемых в папку.

базовый код VBA используется на многих сайтах http://www.slipstick.com/outlook/rules/run-outlook-rules-startup/

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

Если вы хотите запустить его для папки, в которую вы переместили сообщения, а не для папки "Входящие", укажите эту папку.

http://msdn.microsoft.com/en-us/library/office/ff864433%28v=office.14%29.aspx

говорите вы создайте папку под названием "входящие" "RunRules"

после перемещения сообщения (ов) в папку:

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

rl.Execute Folder:=fldRunRules
0
отвечен niton 2022-11-27 20:52

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх