MS Outlook 2007で、自動的に実行したくないルールを設定していますが、手動で散発的に実行したいと考えています。その「手作業」のプロセスを可能な限り促進したいと思います。たとえば、ルールを実行するボタンをツールバーに含めることができるようにする方法はありますか?
基本的に、(別のサーバーによって自動的に生成された)特定の種類のメッセージが到着したときに受信トレイに表示したいのですが、一度表示した後は気にしません。それらのいくつかは非常に些細なものでさえあるので、私がタイトルを見たら、それらをアーカイブに片付けてほしい。受信トレイがこれらでいっぱいになっていると感じるたびに、[ツール]メニュー、[ルールとアラート]、[ルールの実行]に移動し、必要なルールを見つけてチェックボックスをクリックし、[実行]ボタンをクリックして、Okすべて完了したら2回、そのプロセスを1つのボタンクリックに要約したいと思います。
次のいずれかを実行できます。
多かれ少なかれ同じことをしたかった。受信トレイに届くとすぐにルールを介してファイルするメールがあります。私はそれらを見ていません。それから私が見たり読んだりする必要がある他のものがあります、しかし私がそうしたら私はそれらを素早く提出する規則を持つこともできます。これは、Outlookのルールシステムが失敗しているように見える場所です。これは、ほとんどの場合、Exchangeサーバーが独自に実行できるようにするために、新しいアイテムでのみ発生します。そのため、既読メッセージを正しいフォルダにドラッグするのに多くの時間を浪費します–そして私はそれらの数百を持っています。
基本的な手順で、これを実装した方法は次のとおりです。
Fileit:
を付けて保存し、これらがカテゴリベースのルールであることを示しました(つまり、他のルールとは異なり、アクションの遅延)。Fileit
で始まるルール名でルールを実行するマクロ(下記)を作成しました。だから今、私が読んだものを私の受信箱にファイルするために、私はそれを選択してボタンを押すと、私のFileit
ルールに基づいてすべてが魔法で消えます。私は他の方法でカテゴリを使用しないので、これは私にとってはうまくいきます。カテゴリ設定が残っていることにも注意してください(これはプラスと見なすことができます)。すでにカテゴリを頻繁に使用している場合、これはあまりうまく機能しません。これにより、ルールが「クライアントのみ」のルールに変わることに注意してください(カテゴリビットがこれを行います)。これは、基本的にExchangeがルールを実行できないことを意味します。これは問題ありませんが、保存すると警告が表示されます。ルール。コードは特別なものではなく、ほぼ確実に数分で自分で実行できますが、必要に応じてコピー/貼り付けするためにここに示します。
Sub myFileItMacro()
' 2015-06-24 SWB First attempt to automate Outlook filing
' Note that Outlook 2013 does not have a macro recorder, which doesn't help.
Dim myItem As Outlook.MailItem
Dim intItemCount As Integer
Dim myRules As Outlook.Rules
Dim myRule As Outlook.Rule
Dim intLoop As Integer
' Used to set category of more than one item ...
intItemCount = Application.ActiveExplorer.Selection.Count
If intItemCount > 0 Then ' ... and to check at least one is selected
' Next, assign it to the category. This should be set up beforehand.
For intLoop = 1 To intItemCount
' This could throw an error if there is nothing selected, presumably.
Set myItem = Application.ActiveExplorer.Selection.Item(intLoop)
myItem.Categories = "Auto-file"
myItem.UnRead = False ' Flag as read
' You should be able to see this in the category column once this line runs.
myItem.Save
Next
' Lastly, run the rules on the inbox, although, it would be even better
' to run rules just on this item. Hmmm
' You have to do this by going through the rules.
Set myRules = Application.Session.DefaultStore.GetRules
For Each myRule In myRules
' Execute only rules named starting with "Fileit".
' These have the category filter.
If Left(myRule.Name, 6) = "Fileit" Then
myRule.Execute (False)
End If
Next
End If
End Sub
2番目の回答から追加。
Outlook 2010および2013(または必要に応じて365)には「クイックステップ」があることを忘れました。これらの種類を使用すると、自動ファイルボタンを設定できます。私がそれらに関して抱えている問題は、ルールごとに1つ設定する必要があるということです。 50個のフォルダーにファイルしたいものが50個ある場合、50個のクイックステップが必要です。メールを右の(サブ)フォルダーにドラッグするのと同じくらい長い間、正しいクイックステップを見つけるのに時間がかかるため、目的が果たせません。私はここで間違っている可能性があります、そして私がそうであるならば私を訂正してください、しかしそれは私の理解です。
上記のコードの利点は、リボンに1つのボタンを押して、複数のアイテムが選択されている場合でも、それぞれに適切なルールが適用されるため、さまざまなルールを適用できることです。私が見つけた唯一の欠点は、ルールを設定していない場合(しばらくすると覚えにくい、自宅と職場のPCがあるなど)、カテゴリを設定するだけでメールが移動しないことです。大したことではありません。ああ、明らかにマクロは悪なので、マクロの実行を許可する必要があります。
元のポスターが2011年に戻ったのは知っていますが、おそらくこれについては完全に忘れているでしょうが、質問は実際にはまだ有効であり、すばらしいインターネットではほとんど回答されていないので、貢献したいと思いました。これは、Outlookの使いやすさが本当に不足していると思う領域のひとつであり、すべては「メッセージが到着した後にこのルールを適用する」というルールの最初の部分に帰着します。これを「ボタンを押したときにこのルールを適用する」などに変更できれば、私のコードは必要ありません。少なくとも、カテゴリに基づくルールを設定できます。これが、上記のコードが機能する理由です。