1.はじめに
日報メールや請求書メールなど、メールの件名や本文に日付を挿入する機会はよくありますよね。手動で日付を入力すると手間がかかり、誤った日付を入力してしまう可能性もあります。(私は日報送信で日付ミスをした経験があります😢)そこで、この記事ではOutlook VBAを使用して、日付の自動入力機能を実装します!
2. マクロを作成する
マクロは、アプリケーションソフトであらかじめ操作手順を設定しておくことによって、必要なときに簡単に実行させることができる機能のことです。
2.1 メールテンプレートを作成する
まず、用意するのは「.oft」という形式のメールテンプレートです。これを使えば、ある程度決まりきったフォーマットのメールを手軽に作成できます。
2.1.1 メールテンプレートを作成する
通常のメール作成時と同じようにメールのテンプレートを作成しましょう。
宛先、件名、本文等の必要な情報を入力してください。この時に件名と本文の日付を入力したい箇所には、それぞれ「todaySubject」、「todayBody」と入力しておきます。
引用
Outlookに署名設定をしている場合はテンプレートには署名を入れないようにしましょう。テンプレートを使用するときに署名が自動挿入されて重複してしまいます。
2.1.2 「.oft」として保存する
引用
メニューの中の「ファイル」をクリックします。
引用
「名前を付けて保存」をクリックします。
引用
「ファイルの種類」から「Outlookテンプレート(*.oft)」を選択します。選択するとテンプレートの保存フォルダが自動的に選択されます。デフォルトの保存場所は下記です。
%userprofile%\AppData\Roaming\Microsoft\Templates
デフォルトのフォルダに保存してもいいですし、お好きなフォルダに保存しても大丈夫です。ただし、この後にファイルのパスを入力する場面があるため、パスを覚えておいてください。
2.2 VBAコードを作成する
VBA(Visual Basic for Applications)は、マクロを記述するための言語です。
2.2.1 Outlook VBAを使う設定をする
Outlookでは、デフォルトでセキュリティのためにマクロが無効になっています。マクロの実行を許可するためには、「マクロの設定」からセキュリティレベルを変更する必要があります。
Outlookを起動して画面左上の「ファイル」をクリックします。
引用
「オプション」をクリックします。
引用
「トラストセンター」をクリックし「トラストセンターの設定」をクリックします。
引用
左側メニューの「マクロの設定」をクリックしセキュリティレベルを選択します。
「すべてのマクロに対して警告を表示する」オプションを選択すると、マクロを実行するたびに警告のポップアップが表示されます。これにより、意図しないマクロが自動実行されるリスクを軽減できますが、煩わしく感じるかもしれません。
一方、「すべてのマクロを有効にする」オプションを選択すると、どんなマクロも警告なしで実行することができます。この設定では、マクロを頻繁に使用する場合に便利ですが、警告が表示されないため、意図しないマクロが自動実行されるリスクもあります。
どちらかご自身で選択してください!ちなみに私は「すべてのマクロを有効にする」を選択しています!
最後にoutlookを再起動して設定完了です。
2.2.2VBEを開いてVBAコードを作成する。
ショートカットキーAlt+F11を押下してVBEを開きます。
左側の「Project1」を左クリックし、「挿入」「標準モジュール」と順に選択をします。
以下のコードをコピペしてください!
また、ご自身の環境のotfファイルのパスを入力してください。
Sub Insert_Date1()
'''件名と本文に今日の日付を挿入します。
'''
'''
'■2.今日の日付をFormat関数でフォーマットします。
Dim today As String
Dim month_and_day As String
today = Format(Date, "(yyyy/mm/dd)")
month_and_day = Format(Date, "mm月dd日")
'■3.メールテンプレートを呼び出す処理
Dim objItem As MailItem
'下記にメールテンプレートのパスを入力してください
Set objItem = Application.CreateItemFromTemplate("C:\Users\user\AppData\Roaming\Microsoft\Templates\日報.oft")
'■4.件名と本文にフォーマットした日付文字列を置換します。
objItem.Subject = Replace(objItem.Subject, "todaySubject", today)
objItem.Body = Replace(objItem.Body, "todayBody", month_and_day)
objItem.Display '添付ファイル付けたあとにメールテンプレートを表示します。
End Sub
ショートカットキーCtrl+Sを押下してマクロを保存してVBEを閉じます。
3. マクロを実行する
ショートカットキーAlt+F8を押下してマクロ一覧を表示します。
「Insert_Date1」を実行します。
日付が自動的に挿入されたメールが開きます!!
必要に応じて編集してから送信ボタンをクリックしてメールを送信してください。
おわりに
この記事では、Outlook VBAを使用して日付の自動入力機能を実装する手順を紹介しました。この自動入力機能により、手作業の手間やミスを軽減しながら、効率的なメール作成を実現できます。ぜひ試してみてください!
参考