選択した予定表フォルダーの特定の日に時間固定の予定を作成するマクロ


コメントにて以下のご要望をいただきました。


はじめまして。予定表において、時間帯と件名が決まっている予定(例AM9:00~12:00、件名:会議)を自動で入力できるマクロを作成しましたが、どうしても自分の予定表にしか登録されません。他人の予定や会議室などをクリックした状態でそのマクロを実行すると、クリックしているユーザーに対して予定が作成されるようなマクロを作成したいです。可能でしょうか。アドバイスを頂けると幸甚です。(ちなみに他のユーザーや会議室のアクセスは自由に書き込める設定となっています。バージョンは2010です)


予定表に新規で予定アイテムを作成するという場合、通常は CreateItem メソッドに olAppointmentItem を指定してアイテムを作成します。
しかし、この方法だと既定の予定表、つまり自分自身の予定表にアイテムが生成される動作となります。

現在選択している予定表にアイテムを追加するには、ActiveExplorer メソッドで取得した Explorer オブジェクトの CurrentFolder により選択しているフォルダーを取得し、その Items プロパティの Add メソッドでアイテムを追加します。
また、選択している日に時間帯を固定でアイテムを作成する場合は、ActiveExplorer の CurrentView プロパティで取得できる CalendarView オブジェクトの SelectedStartTime プロパティで選択範囲の開始日時を取得し、その日付をもとに開始日時と終了日時を設定します。

まとめると以下のようなマクロになります。

' ここをトリプルクリックでマクロ全体を選択できます。

Public Sub AddAppointmentToSelected()
     ' 作成する予定の件名を指定
     Const APPT_SUBJECT = "会議"
     ' 作成する予定の開始時刻
     Const APPT_START_TIME = "9:00"
     ' 作成する予定の終了時刻
     Const APPT_END_TIME = "12:00"
     Dim fldCalendar As Folder
     Dim apptItem As AppointmentItem
     Dim strSelDate As String
     ' 現在選択しているフォルダーを取得
     Set fldCalendar = ActiveExplorer.CurrentFolder
     ' フォルダーの種類が予定表だった場合だけ追加
     If fldCalendar.DefaultItemType = olAppointmentItem Then
         ' 選択されている時間の開始日時を取得
         strSelDate = ActiveExplorer.CurrentView.SelectedStartTime
         ' 日付だけを取得
         strSelDate = FormatDateTime(strSelDate, vbShortDate)
         ' 選択されたフォルダーにアイテムを追加
         Set apptItem = fldCalendar.Items.Add()
         ' 件名、開始日時、終了日時を指定
         apptItem.Subject = APPT_SUBJECT
         apptItem.Start = strSelDate & " " & APPT_START_TIME
         apptItem.End = strSelDate & " " & APPT_END_TIME
         ' アイテムを保存
         apptItem.Save
     End If
End Sub

マクロの登録方法やメニューへの追加について

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中