件名を条件とするルールをテキストに書き出すマクロ


コメントにて以下のご要望をいただきました。


お世話になります。メールの整理とメッセージの保存を中心に記事を興味深く拝見し活用させていただいています。
さて、教えてください。outlook2010の仕分けルールを書き出すマクロ、といったものは可能でしょうか。仕分けルールの名前と、「件名にxxが含まれる」のxxだけでよいのですが。
仕事で仕分けルールを多用しています。200弱になります。件名で判定することが多いのですが、似た件名でも間にスペースがあったりなかったりするので、件名にxxが含まれるのxxが1つの仕分けルールに20あったりして、画面上でひとめで見られず何度もスクロールしなければなりません。目視で管理するのに時間がかかり限界を感じています。
仕分けルールをエクスポートしてrwzファイルをメモ帳で開いてみましたが、文字化けしました。



Outlook のオブジェクト モデルでは、以下の手順でルールの情報を取得することができます。

  1. 既定のストア (Session.DefaultStore) の GetRules メソッドにより、Rules コレクションを取得
  2. Rules コレクションから Rule オブジェクトを取得
  3. Rule オブジェクトのプロパティからルールの条件 (Conditions) や処理 (Actions) を取得

今回は、件名に xx が含まれるという条件の xx だけがあればよいということなので、Conditions で ConditionType が olConditionSubject のものだけ出力するというマクロを作ってみました。
実行すると、ルールの名前と条件の文字列をタブ区切りでテキストファイルに書き出します。条件の文字列が複数ある場合は、それらもタブで区切って出力します。

マクロは以下の通りです。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub ExportSubjectConditionRules()
    Const EXPORT_FILE = "c:\temp\rules.txt" ' 出力するファイル名を指定
    Dim objRules As Rules
    Dim objRule As Rule
    Dim objCondition As RuleCondition
    '
    Open EXPORT_FILE For Output As #1
    Set objRules = Session.DefaultStore.GetRules()
    For Each objRule In objRules
        For Each objCondition In objRule.Conditions
            If objCondition.ConditionType = olConditionSubject Then
                Dim cndSubject As TextRuleCondition
                Dim txtKey As Variant
                Dim strLine As String
                strLine = objRule.Name
                Set cndSubject = objCondition
                For Each txtKey In cndSubject.Text
                    strLine = strLine & vbTab & txtKey
                Next
                Print #1, strLine
            End If
        Next
    Next
    Close #1
End Sub

マクロの登録方法やメニューへの追加について

件名を条件とするルールをテキストに書き出すマクロ」への1件のフィードバック

  1. おはようございます。
    outolookのVBA、参考になりました。
    仕事でoutolook VBAを作成する必要があり、特定の文字を含む件名を抽出し、フラグに連番を自動で入力する必要があります。
    件名の抽出はできたのですが連番にするなどの操作がうまく行きません。
    何かよい方法はありませんでしょうか?
    お忙しいとは思いますが、お知恵を拝借できたらと考えております。
    宜しくお願い致します。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中