こんにちは、チャチャです😺
本日は、Outlookの標準機能ではできない「毎月最初の平日に予定を入れる」方法について解説します。
意外とニーズが多いのに、Outlookでは標準で対応していない…そんなモヤモヤを、VBAマクロでスッキリ解消しましょう!
📚もっと色々と読みたい方へ!
気になった方はぜひ、マガジンやブログカテゴリーからもチェックしてみてください!
▶他のテックハックも気になる方は、こちらからどうぞ👇
テックハック-カテゴリー
▶ このシリーズのnoteマガジンはこちら👇
チャチャのテックハック|技術と発見の記録
🧩背景:Outlookの繰り返し予定の限界
Outlookカレンダーには「毎月第1月曜日」のような繰り返し設定はあるのですが、「最初の平日(=月〜金の最初の日)」という設定は、標準機能では選べません。
特に仕事のルーティンで「毎月最初の営業日にやること」がある方にとって、この制約は地味に不便ですよね。
私の月初に必ずチェックしなきゃいけないことがあるのに忘れてしまいがちで…
✅解決策:VBAマクロで「最初の平日」を自動検出
そこで活躍するのがVBA(Visual Basic for Applications)。
以下のコードを使えば、Outlookに「今後12か月間の最初の平日」に予定を登録できます。
🧪サンプルコード:最初の平日に予定を作成するマクロ
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
🔧使い方ガイド
- OutlookでAlt + F11 を押して「VBAエディタ」を起動

2.左側の「ThisOutlookSession」などに上記コードをコピペ
コード内の.Subject = “月初の平日” の内容を自分がつけたい名称にしてみてください。私は、「個人情報保護運用チェックリスト」にしてカレンダーを作っています。

3.「▶️ 実行」ボタンでマクロを実行!
4.予定表に「毎月最初の平日」の予定が追加されます🎉
⚠️注意点
- Outlookのマクロ設定で「マクロを有効にする」必要があります(初回はセキュリティ警告が出る場合あり)
- 職場で使用する場合は、IT管理者に事前確認するのがベター
- 自動で繰り返すのではなく、マクロ実行時にまとめて12か月分を作る形式です
🏁まとめ
「毎月最初の平日」に定例処理がある方は、ぜひこのマクロでカレンダー登録の時短を実現してみてください!
コメント