「社内の定例会議」「タスクの締切」「顧客訪問予定」など、Outlookカレンダーに毎回手動で登録していませんか?
本記事では、ExcelのVBAからOutlookの予定を自動登録する方法を、初心者向けにわかりやすく解説します。
この記事でわかること
- Excel VBAからOutlook予定表を操作する方法
- カレンダーに予定を自動登録する基本コード
- 実務に役立つ:複数予定の一括登録、通知設定の方法
1. できること:Outlook予定表をVBAで自動操作
VBAを使えば以下のような操作が可能になります。
操作内容 | 自動化効果 |
---|---|
新規予定の追加 | 定型予定を一括登録できる |
開始・終了時間の設定 | タイムスロットの可視化 |
件名・場所・メモの入力 | 管理項目の標準化 |
リマインダー設定 | 自動通知でうっかり防止 |
2. 事前準備:Outlookへの参照設定を有効にする
- Excelを開く
- Alt + F11 → VBAエディターを起動
- メニュー「ツール」→「参照設定」
- 「Microsoft Outlook 16.0 Object Library」 にチェック(バージョンは環境により異なる)
この設定でOutlookオブジェクトが使えるようになります。
3. Outlook予定を1件自動登録する基本コード
Sub AddOutlookAppointment()
Dim olApp As Outlook.Application
Dim olNs As Outlook.Namespace
Dim olCalendar As Outlook.MAPIFolder
Dim olAppt As Outlook.AppointmentItem
' Outlook起動
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set olCalendar = olNs.GetDefaultFolder(olFolderCalendar)
' 新しい予定を作成
Set olAppt = olCalendar.Items.Add(olAppointmentItem)
With olAppt
.Subject = "定例ミーティング"
.Start = #6/25/2025 10:00:00 AM#
.End = #6/25/2025 11:00:00 AM#
.Location = "会議室A"
.Body = "毎週の進捗報告会です"
.ReminderMinutesBeforeStart = 10
.BusyStatus = olBusy
.Save
End With
MsgBox "予定を登録しました"
End Sub
実行すると、Outlookのカレンダーに予定が追加されます。
4. Excelの一覧から予定を一括登録する
以下のような表をExcelに用意してください:
件名 | 日時 | 時刻 | 所要時間(分) | 場所 |
---|---|---|---|---|
顧客訪問A | 2025/06/26 | 14:00 | 60 | 新宿支店 |
定例会議 | 2025/06/27 | 10:00 | 30 | 会議室A |
一括登録のVBAコード
Sub RegisterAppointmentsFromSheet()
Dim olApp As Outlook.Application
Dim olNs As Outlook.Namespace
Dim olCalendar As Outlook.MAPIFolder
Dim olAppt As Outlook.AppointmentItem
Dim ws As Worksheet
Dim i As Long
Dim startTime As Date, endTime As Date
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set olCalendar = olNs.GetDefaultFolder(olFolderCalendar)
Set ws = ThisWorkbook.Sheets("Sheet1") 'シート名を適宜変更
i = 2 ' 1行目は見出しとする
Do While ws.Cells(i, 1).Value <> ""
Set olAppt = olCalendar.Items.Add(olAppointmentItem)
startTime = ws.Cells(i, 2).Value + TimeValue(ws.Cells(i, 3).Value)
endTime = DateAdd("n", ws.Cells(i, 4).Value, startTime)
With olAppt
.Subject = ws.Cells(i, 1).Value
.Start = startTime
.End = endTime
.Location = ws.Cells(i, 5).Value
.ReminderMinutesBeforeStart = 15
.BusyStatus = olBusy
.Save
End With
i = i + 1
Loop
MsgBox "予定を一括登録しました!"
End Sub
5. トラブル対策・注意点
現象 | 対処方法 |
---|---|
「オブジェクトが定義されていません」 | 参照設定が抜けている可能性:Outlookライブラリを有効に |
Outlookが起動しない | Outlookがインストールされているか確認 |
実行しても何も起こらない | 日付や時間のセルが空白でないか確認 |
6. Outlook自動化の活用例(応用編)
- 毎週の会議を繰り返し予定で登録
- Excelからのデータをもとに複数ユーザーへ会議招待
- タスク(ToDo)としてOutlookに登録する
まとめ:VBA × Outlookで予定管理を自動化しよう
やりたいこと | 使う技術 |
---|---|
カレンダーに自動登録 | VBA+Outlook |
一括登録したい | Excelデータ + ループ処理 |
繰り返し予定を設定したい | .RecurrencePattern を活用 |
OutlookとExcelを組み合わせれば、業務の予定管理を一気に効率化できます。手作業の予定登録はもう卒業しましょう!