【Outlook VBA】エクセルワークシートの内容で予定登録する方法

outlook_vba_worksheet_schedule_eyecatch

みなさまこんにちは、ノグチです。

前回の記事では、OutlookでもVBAは使えるということと、VBAでOutlookの予定を登録する方法をご紹介しました。

【はじめてのOutlook VBA】Outlookの予定を登録する方法
Outlook VBAでコーディングするためのVBEの準備と、VBAで予定を登録する方法をご紹介しています。1件の予定登録の手間は大したことがなくても、複数登録する必要が出てくると面倒臭い...本稿では複数の予定をOutlookにまとめて登録するための第一歩として、単体の予定をVBAで登録する方法をご紹介します。

今回は、まとめて予定を登録してしまおう!ということで、エクセルワークシートに記入した予定の内容を、Outlookの予定に登録する方法をご紹介していきます。

スポンサーリンク

MicroSoft Excel xx.x Object Libraryの参照設

さて、エクセルワークシートに記入された内容で予定登録をするということは、エクセルのブックやシートを参照したり、操作できるようにせねばなりませんね。

そこでまずは、OutlookからExcelの参照設定をしましょう。

(この参照設定は必須ではありませんが、参照設定をした方がコードが短くなるのと、クイックヒントが表示されてコーディングが楽、スペルミスをしにくいということもあるので、特に制限が無いのであれば、参照設定をしておくことをお勧めします。)

OutlookのVBEから、参照設定の画面を開きます。

outlook,参照設定

参照設定の画面を開くまでのメニューパスは、エクセルで参照設定をするときと全く同じなので、下記記事を参考にしてくださいね。

【エクセルVBA】エクセルVBAでOutlookを操作しよう!参照設定とOutlookアプリケーションオブジェクトの取得
エクセルVBAでOutlookのメール送信やタスク作成操作をする前準備として、VBEの参照設定や、Outlookアプリケーションオブジェクトの取得方法をご紹介しています。 VBAとOutlookを組み合わせて使うことで、既に便利に使えているメーラーを更に便利にできるかもしれませんよ。

筆者の環境では、Microsoft Excel 16.0 Object Libraryとなっていますが、使っているofficeのバージョンによって数字の部分が異なります。

MicroSoft Excel xx.x Object Libraryにチェックを入れて「OK」をクリックすれば、参照設定は完了です。

ワークブックオブジェクトとワークシートオブジェクトを取得

さて、参照設定ができたところでエクセルブックやシートを操作するため、必要なオブジェクトを取得していきましょう。

まずは、Excelアプリケーションオブジェクトの取得です。

Excelアプリケーションオブジェクト型の変数を宣言して…
Dim オブジェクト名 As Excel.Application
宣言した変数で、 Excelアプリケーションオブジェクトを取得します。
Set オブジェクト名 = New Excel.Application

後はエクセルブックやワークシートオブジェクトですが、こちらはエクセルでVBAを使うときと同様の記述方法でOK。

こんな感じですね。

Dim wb As Workbook
Dim ws As Worksheet

エクセルシートに記入した内容をOutlookの予定に登録するコード

では、準備もできたところでエクセルシートに記入した内容をOutlookの予定として登録していきましょう。

デスクトップに「予定.xlsx」というファイルを作って、Sheet1にこんな感じで予定の内容を記入していきます。outlook,予定登録,ワークシート

このワークシートの内容を纏めてOutlookの予定に登録するコードがこちら。

Sub CreateAppointmentFromExcel()

Dim objApItem As Outlook.AppointmentItem
Dim objExcel As Excel.Application
Dim wb As Workbook
Dim ws As Worksheet

Dim strFile As String
strFile = "C:\Users\Desktop\予定.xlsx"

Set objExcel = New Excel.Application
Set wb = objExcel.Workbooks.Open(strFile)
Set ws = wb.Worksheets("Sheet1")

Dim i As Long

i = 2

Do Until ws.Cells(i, 1).Value = ""

Set objApItem = Application.CreateItem(olAppointmentItem)
    With objApItem
        .Subject = ws.Cells(i, 1).Value     '件名
        .Location = ws.Cells(i, 2).Value    '場所
        .Start = ws.Cells(i, 3).Value       '開始日時
        .End = ws.Cells(i, 4).Value         '終了日時
        .Body = ws.Cells(i, 5).Value        '本文
        .ReminderSet = True
        .ReminderMinutesBeforeStart = 60
        .Save
    End With
    i = i + 1
Loop
End Sub

事前通知のプロパティ、ReminderSetプロパティをTrueにして、ReminderMinutesBeforeStartプロパティに「60」をセットしているので、予定の60分前にOutlookが通知してくれます。

Outlook VBAで登録された予定

上のコードを実行して登録された予定がこれらです。

outlook,vba,登録,予定

予定の中身を見てみると…

この通り、エクセルワークシートに記入された内容で予定登録されていますね。

最後に

今回は、エクセルワークシートに記入された内容を、Outlook VBAで予定登録する方法をご紹介しました。

筆者が企業に所属していた頃、やたらと会議やら外勤やらが多かった時期がありまして、この予定の登録が面倒で放置してしまい、社内で「居るかいないかよくわからん。ミーティングに呼べる時間がわからん。」とお叱りを受けたことがあります。

そのとき、予定がまとめて登録できたらいいのにな~と心底思ったものです。

この方法が、みなさまの予定管理ライフを少しでも快適にできれば幸いです。

それでは、最後までお読みいただきありがとうございました!

連載目次:Outlook VBA 予定を登録してみよう

Outlook VBAで、予定の管理も便利にしてしまいましょう。

VBAでの予定の登録だけでなく、登録済みの予定への操作方法もご紹介しています。

  1. 【はじめてのOutlook VBA】Outlookの予定を登録する方法
  2. 【Outlook VBA】エクセルワークシートの内容で予定登録する方法
  3. 【Outlook VBA】登録済みの予定を日付で検索して取得する方法
  4. 【Outlook VBA】イベントApplication_Startupで起動時に今日の予定を表示する方法
タイトルとURLをコピーしました