こんにちは! みなさんはOutlookカレンダーで「毎月の最初の平日」に予定を自動で登録したいと思ったことはありませんか? 例えば、
- 月初の定例ミーティング
- 経理処理の締め日リマインダー
- ルーチンワークのスケジュール
など、「毎月の最初の平日」に特定の予定を入れたいケースはよくあります。
ちなみに私がこの方法を模索したきっかけは、仕事で個人情報の管理チェックが月初にあるのですが、どうも毎回忘れてしまうのです。。。
カレンダーにスケジュールを定例でいれようと思ったのですが、Outlookの標準機能では「毎月の最初の平日」に限定した繰り返し設定はできないです。 そこで今回は、 VBA(マクロ)を使って自動化する方法 をご紹介します!
方法1:VBAで「毎月の最初の平日」に予定を自動作成
VBAを使うと、Outlookカレンダーに毎月の最初の平日に予定を登録できます。
1. VBAエディターを開く
まず、OutlookのVBAエディターを開きます。
- Outlookを開く
Alt + F11
を押してVBAエディターを開くMicrosoft Outlook Objects
内のThisOutlookSession
をダブルクリック

2. 以下のコードをコピー&ペースト
Sub AddFirstWeekdayAppointment()
Dim olApp As Outlook.Application
Dim olNS As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder
Dim olAppointment As Outlook.AppointmentItem
Dim dt As Date
Dim i As Integer
Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.GetDefaultFolder(olFolderCalendar)
' 12ヶ月分の予定を作成(1年分)
For i = 0 To 11
dt = DateSerial(Year(Date), Month(Date) + i + 1, 1) ' 各月の1日
' もし1日が土日の場合は最初の平日を探す
Do While Weekday(dt, vbMonday) > 5
dt = dt + 1
Loop
' 予定を作成
Set olAppointment = olApp.CreateItem(olAppointmentItem)
With olAppointment
.Subject = "月初の平日"
.Start = dt & " 09:00" ' 9時開始(必要に応じて変更)
.Duration = 60 ' 1時間(必要に応じて変更)
.Save
End With
Next i
MsgBox "予定を作成しました!", vbInformation
End Sub
上記は例になります。
コード内の.Subject = “月初の平日” の内容を自分がつけたい名称にしてみてください。私は、「個人情報保護運用チェックリスト」にしてカレンダーを作っています。

3. 実行する
- VBAエディターの画面で
F5
キーを押す - メッセージが表示されれば成功!
このマクロを実行すると、 現在の月から1年分の「各月の最初の平日」に予定が自動登録 されます。
「毎月の最初の平日に予定を入れる」作業を自動化して、効率的にスケジュール管理をしましょう!
ぜひ試してみてください!
コメント