2

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

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

5 ответов5

1

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

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

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

0

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

Эта ссылка описывает использование «Управление правилами и оповещениями» на вкладке «Файл» для «Запустить правила сейчас».

0

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

Базовый 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

Вы можете помочь себе со вспомогательной рутиной как это:

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .