Office製品はかゆいところに手が届かないなぁ
「余計なお世話みたいな機能ばっかり付け足してどうにかして欲しいところはほったらかし」でお馴染みのOffice製品。Word、Excel、Powerpointあたりはまぁ仕方ない、目をつぶって使いましょうか、となることが多いと思うんだけど、Outlook、お前だけは看過できん。
Skype for Business (旧Microsoft Lync)との予定表連携とかは業務で使うのにはすごく良い機能だと思うんだけど、お前の本分はメーラーだぞ。なんで肝心要のその部分が使いづらいんだ。
一番致命的だと思うところは「自分自身をBCCに入れる」機能がデフォルトで搭載されていないってところだと個人的には思ってる。
と、いうわけで今回はOutlookにこの機能を追加する方法について。やり方は「VBAで書いた自作マクロを登録するしかない」というなんともユーザフレンドリーな設計です。
電子署名の作成
まずは自作マクロを実行可能にするために電子署名の作成。
$MS Officeをインストールしたディレクトリ$\SELFCERT.EXE を実行すると電子署名作成用プログラムが起動するから、それを使って作成。証明書の名前は適当で良いです。
作り終わったらOKボタンを押して終了。
Outlookのマクロ設定
デフォルトだとマクロが勝手に実行できないようにセキュリティがかかってるから、それを変更する。
ファイル→オプション→セキュリティセンターと進んで、「セキュリティセンターの設定」ボタンをクリック。
「マクロの設定」を選んで、ラジオボタンから「すべてのマクロに対して警告を表示する」を選択。これでOutlookの設定はひとまず終わり。
マクロの作成
Outlookの画面に戻ったら「Alt + F11」を押すとMicrosoft Visual Basic for Applicationsが起動するから、左のバーからProject1 (VbaProject.OTM)を選択して、一番下の階層まで広げるとThisOutlookSessionっていう項目があるはずなので、それを右クリックして「コードの表示」を選択。
するとマクロ入力用ウインドウが開くから、そこに以下のコードを入力。これで自分自身が勝手にBCCに追加されて、ついでに送信元アドレスの確認ダイアログも出ちゃうんだなこれが。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) Dim objMe As Recipient Dim strSenderAddr As String strSenderAddr = Item.SendUsingAccount.CurrentUser.Address If MsgBox(strSenderAddr & "からメールを送信してもよろしいですか?", vbYesNo + vbExclamation) = vbNo Then Cancel = True Exit Sub End If Set objMe = Item.Recipients.Add(strSenderAddr) objMe.Type = olBCC objMe.Resolve Set objMe = Nothing End Sub
入力が終わったら、メニューバーからツール→デジタル署名をクリックして、さっき作ったデジタル署名を選択して、最後に保存して終了。