it-swarm-ja.com

Outlook:現在のメッセージにルールを適用しますか?

KMailには非常に便利な機能があります。キーボードショートカットを押したときにのみ実行され、強調表示されたメッセージに対してのみ実行される一連のルールを定義できます。これにより、受信トレイに入ってきたメッセージを読み、キーを1回押すだけでファイルを保存できます。

Outlookでこれを複製するにはどうすればよいですか?おそらく、現在選択されているすべてのメッセージに対してすべてのルールを実行するキーを押すことによってトリガーされるVBAスクリプトがありますか?

2
jl6

はい、これは可能ですが、少し注意が必要です。手順の概要:カテゴリを検索するファイリングルールを作成し、ボタンでマクロを実行して、選択したメッセージをそのカテゴリに変更してから、ルールを実行します。マクロコードを含む、この質問の完全な回答を参照してください...

Outlookルールをオンデマンドですばやく実行しますか?

接頭辞付きのカテゴリに基づいてルールに名前を付けて、マクロで具体的に実行できるようにすることで、もう少し複雑に答えましたが、これはややオプションです。

1
Saulysw

あなたのフォルダはどれくらいの大きさですか? ルールを手動で実行する ができますが、これはフォルダー全体に適用されますが、フォルダーに多数のメッセージがある場合、これは非常に遅くなる可能性があると思います。

このリンクでは、[ファイル]タブの「ルールとアラートの管理」を使用して「今すぐルールを実行」する方法について説明しています。

0
Clare Macrae

答えは「いいえ」と「はい」です。メッセージには「いいえ」、フォルダに移動したメッセージには「はい」。

多くのサイトで使用されている基本的な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

あなたはこのような補助的なルーチンであなた自身を助けることができます:

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

残念ながら、選択したメッセージに対してOutlookルールを実行する方法はありません。フォルダのみ。 : VBAで---(Outlookオブジェクトモデル を使用している場合でも。

0
thims