Computing仕事でOutlookを使っているんだけども、毎日数百通というメールを受信する上に、無数のサイトのRSSを購読しているんで、殆どの情報はExchange上に残さずに個人用フォルダ(PST)に移動させて、サーバーのメールボックスは常に500MBも使っていないような使い方を何年も続けている。サーバーにメールを置いておかないと、PSTを持っているマシンにリモート接続でもできない限り、全ての情報にアクセスできないというマイナス点はあるものの、それが必要なこともあまりないから関係ないかなと。カレンダーの新年を迎えるごとに新しいPSTを作って、そっちに保存するように切り替えてるんだけど、年に1度の作業とはいえ、フォルダーのツリーを目で確認しながら1個ずつ作っていくのはとても面倒だと毎年感じていた。5年以上繰り返しておきながら、今年ついに一念発起。マクロでフォルダーのツリー構造を新しいPSTにコピーすることにした。手動で新しいPSTを追加してから、マクロで、Outlookのプロファイルで見える全てのストアの中から、コピー元になるPSTと新しいPSTを選ぶだけ。あとは、マクロで階層構造をそのままターゲットのPSTに作っていく。サブフォルダーも再帰的に。自分用なので、一切のエラーハンドリングも気の利いたメッセージも表示しないけど、処理時間は数秒だし、ファイルが消えるようなこともなかったんで十分でしょ。準備としては、プロジェクトにユーザーフォームを追加。ComboTargetとし、OKボタンは成り行きでStoreSelection_OKという名前になった。フォームの名前は何でもいいけど、既定のUserForm1をそのまま使用。フォームをクリックして選択してから、メニューの[挿入]-[標準モジュール]で新しいモジュールを挿入し、表示された空のウィンドウに以下のコードを貼りつける。Functionさらに、フォームのOKボタンをダブルクリックして、ハンドラーのコードを以下のように書く。selfcert.exeで自己署名証明書を作ってマクロに署名して、セキュリティセンターでマクロの実行を許可してからマクロを実行すると、指定したストア間で簡単にツリー構造が複製できる。自分で作っておきながら、テストもしないで一発でツリーがコピーできたときは感激しちゃった。楽すぎる!あとは、RSSやクライアントルールの設定で、保存先のフォルダーを新しいPSTに変更するだけ。帰省このブログを購読Homeこのブログはクリエイティブ・コモンズでライセンスされています。