こんにちは、くのへ@MasazaneKunoheです。
Outlook VBAで会議アイテムを作る基本コードをまとめました。
会議アイテムの宛先は、To、CC、BCCではなく、「必須出席者」「任意出席者」「リソース(会議室とか備品)」なので、設定するプロパティはTo、CC、BCCプロパティではなく、一癖ある設定方法になります。
また、Microsoftの公式DocsではわざわざSetを使って中間オブジェクトを作って初心者に対して難しい表記をしていますが、わざわざそんなことをしなくてもコーディングできます。
今回は会議アイテムの基本コードとしてまとめました。
会議アイテム作成の基本コード
会議アイテム作成の基本コードは以下の通りです。Outlook VBEにコピペで動くと思います。
Sub AddSchedule()
'会議アイテムを作成するマクロ
Dim objAppoItem As Object
Set objAppoItem = CreateItem(olAppointmentItem)
With objAppoItem
'会議アイテムにする場合はここを記載
.MeetingStatus = olMeeting
If .MeetingStatus = olMeeting Then
'必須出席者
.Recipients.Add ("AAA@sample.com")
.Recipients("AAA@sample.com").Type = olRequired
'任意出席者
.Recipients.Add ("BBB@sample.com")
.Recipients("BBB@sample.com").Type = olOptional
'リソース者
.Recipients.Add ("CCC@sample.com")
.Recipients("CCC@sample.com").Type = olResource
End If
'以降はスケジュール作成コードと同じ-----------------------
.Subject = "test"
.Location = "会議場所"
'開始日時と終了日時を設定。終日の予定ならば、時間はなんでもOK
.Start = "2021/8/9 9:00"
.End = "2021/8/9 10:00"
'「終日の予定」ならばTrueにする。
'もしTrueにすると開始/終了時間は0:00に強制変更される
.AllDayEvent = False
'公開方法を設定する。.BusyStatusを設定しなければデフォルトで「予定あり」が設定される。
'設定する場合、イコールの次を次のように記載する。
'空き時間= olFree、他の場所で作業中= olworkingElsewhere、
'仮の予定= olTentative、予定あり= olBusy、外出中= olOutOfOffice
.BusyStatus = olBusy
'アラームをセットするならTrueにする。
'.ReminderMinutesBeforeStartには開始時間の何分前にアラームを鳴らすか設定
.ReminderSet = True
If .ReminderSet = True Then
.ReminderMinutesBeforeStart = 15 '左記だと15分前に設定される
End If
.Body = "testだよ"
.Save
End With
End Sub
解説
会議アイテムはスケジュールアイテムと同じく、 CreateItem(olAppointmentItem) で作ります。
そして、 アイテムオブジェクトの[MeetingStatus]プロパティをolMeeting にすると会議アイテムになります。
コードのこの部分です。
objAppoItem.MeetingStatus = olMeeting
注)サンプルコードでは、With文でobjAppoItemは省略している
会議アイテムの場合、宛先を設定する必要がありますが、 会議アイテムの場合はTo、CC、BCCではなく、「必須出席者」「任意出席者」「リソース(会議室とか備品)」という設定となります。そのため、宛先はTo、CC、BCCプロパティで設定しません。
設定するためには、会議アイテム内のRecipientsオブジェクトに、addメソッドで参加者を追加します。
そして 「必須出席者」「任意出席者」「リソース(会議室とか備品)」 に相当するTypeプロパティを書き換える、という方法です。
↓コードのこの部分です。
If .MeetingStatus = olMeeting Then
'必須出席者
.Recipients.Add ("AAA@sample.com")
.Recipients("AAA@sample.com").Type = olRequired
'任意出席者
.Recipients.Add ("BBB@sample.com")
.Recipients("BBB@sample.com").Type = olOptional
'リソース者
.Recipients.Add ("CCC@sample.com")
.Recipients("CCC@sample.com").Type = olResource
End If
Microsoft社の公式Docsでは、わざわざSetステートメントで中間オブジェクトを挟んでTypeを指定していましたが、これは逆に分かりにくいと思います。こちら
(初心者はこういう記載をしないとダメだ、って勘違いしてしまうよ。。。)
後はスケジュールアイテムと基本的に同じです。関連記事を御参照ください。
最後はDisplayではなく、Sendも使える
会議アイテムの場合は、Displayメソッドでウィンドウに表示するだけではなく、メールと同じようにSendメソッドが使えます。
表示せずにそのまま送信することもできるのね~
会議アイテムの送信設定がちょっと難しいことに気が付き、記事化しました。
ではまた別の記事で~
🦅バサバサ~