Outlookのマクロを活用して日付を自動挿入する方法

# 1.はじめに
日報メールや請求書メールなど、メールの件名や本文に日付を挿入する機会はよくありますよね。手動で日付を入力すると手間がかかり、誤った日付を入力してしまう可能性もあります。(私は日報送信で日付ミスをした経験があります😢)そこで、この記事ではOutlook VBAを使用して、日付の自動入力機能を実装します!

# 2. マクロを作成する
マクロは、アプリケーションソフトであらかじめ操作手順を設定しておくことによって、必要なときに簡単に実行させることができる機能のことです。
## 2.1 メールテンプレートを作成する
まず、用意するのは「.oft」という形式のメールテンプレートです。これを使えば、ある程度決まりきったフォーマットのメールを手軽に作成できます。
### 2.1.1 メールテンプレートを作成する
通常のメール作成時と同じようにメールのテンプレートを作成しましょう。
宛先、件名、本文等の必要な情報を入力してください。この時に件名と本文の日付を入力したい箇所には、それぞれ「todaySubject」、「todayBody」と入力しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648527/7c323691-b118-7d19-df0f-b97927244e75.png)
[引用](https://www.teijitaisya.com/mail-templete/)

Outlookに署名設定をしている場合はテンプレートには署名を入れないようにしましょう。テンプレートを使用するときに署名が自動挿入されて重複してしまいます。

### 2.1.2 「.oft」として保存する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648527/b30ddec6-8bc1-741c-c9d6-9f9f7a296fa5.png)
[引用](https://www.teijitaisya.com/mail-templete/)
メニューの中の「ファイル」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648527/eed17252-e7c2-9be9-9e58-026761b2df9d.png)
[引用](https://www.teijitaisya.com/mail-templete/)
「名前を付けて保存」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648527/10b08ee6-2b1b-7084-02f1-85206b0d8a73.png)[引用](https://www.teijitaisya.com/mail-templete/)
「ファイルの種類」から「Outlookテンプレート（*.oft）」を選択します。選択するとテンプレートの保存フォルダが自動的に選択されます。デフォルトの保存場所は下記です。

```shell_session
%userprofile%\AppData\Roaming\Microsoft\Templates
```
デフォルトのフォルダに保存してもいいですし、お好きなフォルダに保存しても大丈夫です。ただし、この後にファイルのパスを入力する場面があるため、パスを覚えておいてください。



## 2.2 VBAコードを作成する
VBA（Visual Basic for Applications）は、マクロを記述するための言語です。

### 2.2.1 Outlook VBAを使う設定をする
Outlookでは、デフォルトでセキュリティのためにマクロが無効になっています。マクロの実行を許可するためには、「マクロの設定」からセキュリティレベルを変更する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648527/77540717-d56b-4121-3534-16d241e7c2f3.png)
Outlookを起動して画面左上の「ファイル」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648527/d8e0364d-16d3-161d-f7df-e57079d0e350.png)
[引用](https://www.teijitaisya.com/mail-templete/)

「オプション」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648527/ca0eaab8-fc90-54cb-75cc-714156b2d5ff.png)[引用](https://www.teijitaisya.com/mail-templete/)
「トラストセンター」をクリックし「トラストセンターの設定」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/648527/aac48401-ca24-3798-447a-15c707f09a14.png)[引用](https://www.teijitaisya.com/mail-templete/)
左側メニューの「マクロの設定」をクリックしセキュリティレベルを選択します。

「すべてのマクロに対して警告を表示する」オプションを選択すると、マクロを実行するたびに警告のポップアップが表示されます。これにより、意図しないマクロが自動実行されるリスクを軽減できますが、煩わしく感じるかもしれません。
一方、「すべてのマクロを有効にする」オプションを選択すると、どんなマクロも警告なしで実行することができます。この設定では、マクロを頻繁に使用する場合に便利ですが、警告が表示されないため、意図しないマクロが自動実行されるリスクもあります。

どちらかご自身で選択してください！ちなみに私は「すべてのマクロを有効にする」を選択しています！

最後に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日")
    
    '■３.メールテンプレートを呼び出す処理
    Dim objItem As MailItem
    '下記にメールテンプレートのパスを入力してください
    Set objItem = Application.CreateItemFromTemplate("C:\Users\user\AppData\Roaming\Microsoft\Templates\日報.oft")
    
    '■４.件名と本文にフォーマットした日付文字列を置換します。
    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を使用して日付の自動入力機能を実装する手順を紹介しました。この自動入力機能により、手作業の手間やミスを軽減しながら、効率的なメール作成を実現できます。ぜひ試してみてください！


# 参考

https://www.teijitaisya.com/outlook-vba-insert-date/