非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Outlook/VBA: 受信トレイのメールを個人フォルダに移動する

      2017/09/13

Outlookにはメール受信時にフォルダへの振り分け機能があるのですが、個人的に受信はあくまで受信トレイに、既読後にフォルダに移動する、という行動を取っています。未読メールは受信トレイに集約したいので。そうなると、自動振り分け機能を使うことができず手動でやるしかありません。そこで、すべて既読にしたあとに、マクロで指定フォルダへ移動するようにしました。

[ad#top-1]

個人フォルダの作り方と、Outlookでマクロ(VBA)を使う基本的な手順は以下のブログで書いていますので参考まで。

 

今まで、Outlook2016で説明してきましたが、先だってそのパソコンが故障してしまい現在修理中につき、今回はサブマシンの中のOutlook2010を使って説明します。基本同じやり方です。

こちらが用意したOulook2010と2つの既読メールです。

 

今回は、「テスト1」を「Folder1」フォルダに、「テスト2」を「Folder2-1」フォルダに移動させます。見ての通り、「Folder2-1」は「Folder2」の子フォルダになっています。

 

この処理を行うマクロは以下の通りです。

 

まず、Outlook.Applicationオブジェクトをセットして、受信トレイを取得しておきます。GetDefaultFolderの引数6が受信トレイを示しています。その後、受信トレイのメール数を取得していますが、一番古いメールがインデックス1となりますので、一番新しいメールのインデックス=受信トレイのメール数となります。

 

ここで、一番新しいメール「テスト1」を、「Folder1」フォルダに移動しています。

 

次に、「テスト2」を、「Folder2-1」フォルダに移動しています。子フォルダへのアクセスはFoldersメソッドを連ねて書くことで可能になります。「Folder2-1」は「Folder2」の子フォルダなので、.Folders(“Folder2”).Folders(“Folder2-1”) となるわけです。

 

これを実行すると以下のように各フォルダに移動しました。

 

今回はあくまで基本的な機能のみフォーカスして簡単なプログラムを紹介しましたが、これを使って全メールをループして指定フォルダに移動することができると思います。(そのプログラムはいずれ紹介します。)

■追記■

全メールをループして指定フォルダに移動するマクロを作りました。GitHubにてソースコード公開中。

[ad#ad-1]

スポンサーリンク

 - Outlook, VBA