View on GitHub

Samuraishockdo_pages

github pages

OUTLOOKでテンプレートから自動で日付挿入

毎日OUTLOOK2010で日報メールを書いている。
内容は

宛先アドレス :固定
件名:今日の日付 + 日報
本文:  
○○様
今日の日付 の日報です。
以下箇条書き~~

ってな感じで、箇条書きの内容を除いて後は毎日同じです。
宛先を選んだり、日付を毎日書くのがだるいのでマクロにしました。
マクロはコレ

Sub 日報()
    Dim MyItem As Outlook.MailItem

    Set MyItem = Application.CreateItemFromTemplate("C:\Users\username\AppData\Roaming\Microsoft\Templates\日報.oft")
    MyItem.Display
    dtShort = FormatDateTime(Now, vbShortDate)
    MyItem.Subject = Replace(MyItem.Subject, "yyyy/mm/dd", dtShort)
    MyItem.Body = Replace(MyItem.Body, "yyyy/mm/dd", dtShort)
End Sub

手順 1

新規メールで送りたいメールを作成します。
のちにマクロで日付と置換させるための文字列、 yyyy/mm/dd  を件名と、本文に書いておきます。場所は好きなところで構いません。

それを名前を付けて保存するのですが、この時「OUTLOOKテンプレート形式」を選択して保存します。
そして、保存先のファイルpathをメモ。

outlook

手順2

OUTLOOKのVBAエディターを開き、上記のマクロを書き込みます。

Set MyItem = Application.CreateItemFromTemplate("C:\Users\username\AppData\Roaming\Microsoft\Templates\日報.oft")

のパスの部分にさっき保存したテンプレートのパスを記入します。 作成はこれで終了です。

【使い方】

開発>マクロ から呼び出して使います。
自動で、件名と本文のyyyy/mm/ddが、今日の日付 2015/01/23 などに置換され入力された新規メールがあなたの目の前にあるはずです。
筆者はリボンのユーザー設定をカスタマイズして、すぐ使えるようリボンに表示させています。 これで毎日の無駄な数十秒を節約

outlook
outlook

マクロの解説

このマクロは、yyyy/mm/ddなど置換対象となる文字を、あらかじめOUTLOOKテンプレートファイルに書き込み保存しておいて、そのテンプレートから新規メールを作るときに、対象文字列を現在時刻に置換するというものです。
コードを見てみましょう。
筆者はリボンのユーザー設定をカスタマイズして、すぐ使えるよう表示しています。
オブジェクト型変数の宣言です、MyItem は、新しいメール メッセージを表す MailItem オブジェクトだぞと言ってます。

Dim MyItem As Outlook.MailItem

オブジェクト型変数にSetを使って、Outlook テンプレート (.oft) から新しい Outlook アイテムを作成し、そのアイテムを代入すぞと言っています。()の中にはOutlook テンプレートのパスとファイル名を指定しております。

Set MyItem = Application.CreateItemFromTemplate("C:\Users\username\AppData\Roaming\Microsoft\Templates\日報.oft")

テンプレートから新しくできたオブジェクト(新しくできたメール)を表示します。

MyItem.Display

日付情報を取得します、、FormatDateTime(Now関数で現在のシステムの日付と時刻取得,vbShortDate「地域のプロパティ」で指定されている短い形式で日付)にしたものを変数dtshortに代入しています。
dtshortの中身は、2015/01/23などのような形になっています。

dtShort = FormatDateTime(Now, vbShortDate)

メールの件名 MyItem.Subject  の “yyyy/mm/dd”を 上記のdtshort に置換・代入します。この部分で、件名に書かれている「yyyy/mm/dd」が、2015/01/23などの文字に入れ替わるという仕組みです。

MyItem.Subject = Replace(MyItem.Subject, "yyyy/mm/dd", dtShort)

同じやり方で、メール本文MyItem.Bodyを置換・代入します。

MyItem.Body = Replace(MyItem.Body, "yyyy/mm/dd", dtShort)

というわけです。 要はテンプレートにあらかじめ書いてあった文字を置換しているので、

MyItem.Body = Replace(MyItem.Body, "置換対象文字列", "置換文字")

をいろいろと付け足せば、本文のカスタマイズできると思います。 ちなみに、OUTLOOK研究所さんの https://outlooklab.wordpress.com/2008/04/12/ テンプレートに自動で今日の日付を設定するマクロ を参考にしています。ほぼパクリじゃねえか?と思われると思われる方もいらっしゃると思いますが、なにとぞ穏便によろしくお願いいたします。

追記:OUTLOOK豆知識

Google アドワーズのキーワードアドバイスツールに予測で出ていたキーワードをご紹介

おうtぉおk

見つけた時、笑っちゃいました!

HOME