【初心者向け】VBAでOutlookカレンダーを自動登録する方法|予定管理を効率化

「社内の定例会議」「タスクの締切」「顧客訪問予定」など、Outlookカレンダーに毎回手動で登録していませんか?

本記事では、ExcelのVBAからOutlookの予定を自動登録する方法を、初心者向けにわかりやすく解説します。


この記事でわかること

  • Excel VBAからOutlook予定表を操作する方法
  • カレンダーに予定を自動登録する基本コード
  • 実務に役立つ:複数予定の一括登録、通知設定の方法

1. できること:Outlook予定表をVBAで自動操作

VBAを使えば以下のような操作が可能になります。

操作内容自動化効果
新規予定の追加定型予定を一括登録できる
開始・終了時間の設定タイムスロットの可視化
件名・場所・メモの入力管理項目の標準化
リマインダー設定自動通知でうっかり防止

2. 事前準備:Outlookへの参照設定を有効にする

  1. Excelを開く
  2. Alt + F11 → VBAエディターを起動
  3. メニュー「ツール」→「参照設定」
  4. 「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に用意してください:

件名日時時刻所要時間(分)場所
顧客訪問A2025/06/2614:0060新宿支店
定例会議2025/06/2710:0030会議室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を組み合わせれば、業務の予定管理を一気に効率化できます。手作業の予定登録はもう卒業しましょう!

タイトルとURLをコピーしました