デスクワークを超絶快適にするおすすめギアたち

【初心者向け】Outlook VBAでメールに今日の日付を自動挿入する!

【当サイトはプロモーションを含んでいます】

この記事でわかること

  • Outlookでメールの件名や本文に日付を自動挿入する方法がわかる。
  • すぐにコピペで使えるVBA コードがわかる。
目次

メールに日付を自動挿入したい!

Outlook VBA マクロ 今日の日付
じょじお

メールの件名や表題に今日の日付を挿入する機会は多いですよね?(上の図の赤枠部分)

ぽこがみさま

はい。日報報告メールとか請求書メールとかでよく見る気がします。手入力だと面倒だし、うっかり誤った日付を入力してしまうミスもありますね!

じょじお

ということで、これもOutlook VBAで自動化してみたいと思います。

Outlookで日付を自動挿入する方法は2つあります。

ここは段落ブロックです。文章をここに入力してください。

  • Outlookの「日付と時刻」機能を使う方法
  • Outlook VBA マクロで自動で置換・挿入する方法

マクロで挿入する方が時短です。

じょじお

日付と時刻の挿入よりも、Outlookマクロの方が早いのでおすすめです!

例えば、メールテンプレートを開いてそこに自動挿入する場合、「日付と時刻の挿入」機能は5~6クリック程度必要ですが、Outlook VBAであればメールテンプレートを開くと同時に自動挿入できるので2クリック程度で済みます。

Outlookの「日付と時刻」の挿入機能の使い方

日付と時刻の挿入方法

  • 新規メールあるいはメールテンプレートを開く
  • 挿入メニューをクリック
  • テキストセクションのところにある「日付と時刻」をクリック
  • 和暦か西暦をクリックして選択する
  • 使用したい表示形式をクリックする。
  • OKボタンをクリックする。
ぽこがみさま

以上が「日付と時刻」機能です。結構クリックすべき項目がありますね。

じょじお

Outlook マクロならこのクリック作業を一撃で実装できます。

マクロを作成する

STEP
メールテンプレートを作成します。

まずは.oft形式のメールテンプレートを用意します。メールテンプレートを使えば形式がある程度きまったメールの作成を時短できます。

株式会社Contoso
山田 様


いつもお世話になっております。
株式会社てじらぼのじょじおです。

今月分の注文書を送付させていただきます。
宜しくお願い致します

▲今回は上記のような本文にしました。HTML形式のメールとして保存します。

▲メールテンプレートの作成方法がわからない方は上の記事の解説をご覧ください。

STEP
VBEを開いてVBAコードをコピペします。
Sub Insert_Date1()
    '''件名と本文に今日の日付を挿入します。
    '''
    '''
    
    '■2.今日の日付をFormat関数でフォーマットします。
    Dim today As String
    Dim year_and_month As String
    today = Format(Date, "(yyyy/mm/dd)")
    'today = Format(Date, "yyyy-mm-dd")
    year_and_month = Format(Date, "yyyy年mm月")
    
    
    '■3.メールテンプレートを呼び出す処理
    Dim objItem As MailItem
    '下記にメールテンプレートのパスを入力してね。
    Set objItem = Application.CreateItemFromTemplate("C:\Users\user\AppData\Roaming\Microsoft\Templates\注文書の送付.oft")
    

    '■4.件名と本文にフォーマットした日付文字列を置換します。
    objItem.Subject = objItem.Subject & today
    objItem.HTMLBody = Replace(objItem.HTMLBody, "今月", year_and_month)
    'objItem.HTMLBody = Replace(objItem.HTMLBody, "今月分", today)

    objItem.Display '添付ファイル付けたあとにメールテンプレートを表示します。
    'objItem.Send '送信も自動化する場合はこの行のコメントアウトを外してください。ただし送信ボタンは人間が押すことをおススメします。

End Sub

▲ショートカットキーAlt+F11を押下してVBEを開きます。VBEの標準モジュールに上記のマクロをコピペします。

▲Outlookマクロを一度を使ったことがない場合、Outlookの設定が必要になる可能性があります。Outlookマクロを使用するための初期設定については上の記事をご覧ください。

STEP
Ctrl+Sでマクロを保存してVBEを閉じます。

ショートカットキーCtrl+Sを押下してマクロを保存してVBEを閉じます。

STEP
おわり

Outlookマクロを実行する。

STEP
Outlookマクロを実行します。

ショートカットキーAlt+F8を押下してマクロ一覧を表示します。

Outlook VBA マクロ 今日の日付

▲コピペしたマクロを実行します。

STEP
マクロが実行されて日付が挿入されたメールが開きます。
Outlook VBA マクロ 今日の日付

▲日付が自動挿入されたメールが開きますので、内容を確認し必要があれば編集して送信ボタンを押して送信します。

STEP
おわり

Outlookマクロのポイント解説!

今日の日付を取得する

今日の日付はDate関数で取得します。

Format関数で日付の表示フォーマットをカスタマイズします。

today = Format(Date, "(yyyy/mm/dd)")
year_and_month = Format(Date, "yyyy年mm月")
    
Format関数の記述例実行結果
Format(Date, “yyyy/mm/dd”)2022/03/17
Format(Date, “yyyymmdd”)20220317
Format(Date, “(yyyy/mm/dd)”)(2022/03/17)
Format(Date, “yyyy-mm-dd”)2022-03-17
Format(Date, “yyyy年mm月”)2022年03月
format(date , “yyyy年”)2022年
VBAのFormat関数の使用例

メール件名に日付を挿入する

objItem.Subject = objItem.Subject & today

objItem.Subjectは、メールテンプレートにもともと記入されていた件名が入ってます。今回の例でいうと「注文書の送付」という文字列です。それにFormat関数で整形した日付を&を使って合体してます。

メール本文に日付を挿入する

objItem.HTMLBody = Replace(objItem.HTMLBody, "今月", year_and_month)

▲メールテンプレート本文中に記載されている「今月」を実際の日付に変換するためにreplace関数を使っています。Replace関数の公式は下記です。

Replace関数:Replace(ターゲット文字列, ターゲット文字列から探し出す文字列, 探し出した文字列を変換する文字列)

今回の例では、Replace(objItem.HTMLBody, "今月", year_and_month)というように使ってます。objItem.HTMLBodyは、もともとメールテンプレートに記入されている文字列です。その中から「今月」という文字列を探し出して今日の日付に置換しています。置換した文字列をobjItem.HTMLBodyに戻しています。

ファイルの添付も同時に行いたい!

マクロ実行時にファイルの添付を行い為のコードもあわせて紹介します。このコードはOutlookに参照設定(Excel Object)が必要です。

STEP
OutlookでExcelの参照設定を行います。

▲OutlookでExcelの参照設定を行います。方法は上の記事で解説しています。言葉で聞くと面倒そうですがやることはとっても簡単な作業です。

STEP
コードをコピペして保存します。
Sub Insert_Date2()
    '''件名と本文に今日の日付を挿入します。
    '''ファイル添付ありバージョン
    '''

    '■1.Excelを呼び出す処理(ファイルダイアログを呼び出すため)
    Dim excelObject As Excel.Application
    Set excelObject = New Excel.Application
    excelObject.Visible = False 'Excelは非表示にする
    
    
    '■2.今日の日付をFormat関数でフォーマットします。
    Dim today As String
    Dim year_and_month As String
    today = Format(Date, "(yyyy/mm/dd)")
    'today = Format(Date, "yyyy-mm-dd")
    year_and_month = Format(Date, "yyyy年mm月")
    
    
    '■3.メールテンプレートを呼び出す処理
    Dim objItem As MailItem
    '下記にメールテンプレートのパスを入力してね。
    Set objItem = Application.CreateItemFromTemplate("C:\Users\user\AppData\Roaming\Microsoft\Templates\注文書の送付.oft")
    
    
    '■4.件名と本文にフォーマットした日付文字列を置換します。
    objItem.Subject = objItem.Subject & today
    objItem.HTMLBody = Replace(objItem.HTMLBody, "今月", year_and_month)
    'objItem.HTMLBody = Replace(objItem.HTMLBody, "今月分", today)

    
    
    
    '■5.ファイルダイアログを設定して表示する処理
    Dim fdFolder As Office.FileDialog
    Set fdFolder = excelObject.Application.FileDialog(msoFileDialogFilePicker)

    With fdFolder
        .InitialFileName = "%userprofile%\" '一番最初に開くフォルダのパスを記述します。
        .AllowMultiSelect = True '複数ファイルの選択を許可する場合はTrue・しない場合はFalse
        .Title = "メールに添付するファイルを選択してください(複数選択可)。"
        '選択できるファイルを制限するには下記のようにフィルターを追加してください。
'        .Filters.Add "Excels", "*.xls* ", 1
'        .Filters.Add "Images", "*.png; *.jpg; *.jpeg", 2
'        .Filters.Add "Documents", "*.doc*; *.pdf; *.txt ", 3
'        .Filters.Add "csv", "*.csv", 4
'        .Filters.Add "any", "*.*", 5
'        .FilterIndex = 1 'デフォルトのフィルターをindexで指定します。
        .Show 'ファイルダイアログを表示します。
    End With
    
    
    '■6.選択されたファイルをメールテンプレートに1個ずつ添付する
    Dim SelectedItem
    For Each SelectedItem In fdFolder.SelectedItems
      objItem.Attachments.Add SelectedItem
    Next
    
    objItem.Display '添付ファイル付けたあとにメールテンプレートを表示します。
    'objItem.Send '送信も自動化する場合はこの行のコメントアウトを外してください。ただし送信ボタンは人間が押すことをおススメします。

    Set excelObject = Nothing
End Sub

▲標準モジュールにコピペして保存します。

まとめ

じょじお

この記事ではOutlook マクロでメールに今日の日付を挿入する方法について紹介しました。

ぽこがみさま

このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!

Power Automate学習教材

Power AutomateをKindleで学びたい方はコチラ

▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。

Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。

Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。

Microsoft 365/ Power Automate / Power Platform / Google Apps Script…

Power Automateを動画で学びたい方はコチラ

▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。

お役に立てたらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次