コメントで以下のような質問をいただきました。
エクセルからVBAでOUTLOOK2007の予定表へ、予定アイテムを登録しようとしています。
現在のところ
Set myFolder = myNameSpace.GetDefaultFolder(9) ‘起動時フォルダーで、指定 カレンダー指定
で、OUTLOOKデフォルトの予定表への登録ができています。
しかし、OUTLOOKは複数の予定表を作れますので、デフォルトの予定表ではなく、自分で後から作った予定表に予定アイテムを登録したいと考えています。
その場合、myNameSpace.GetFolder(フォルダID)で取得できると思っているのですが、このID自体の取得ができていません。
複数ある予定表のうち、特定の予定表への登録をする方法をご存知であればご教授いただけないでしょうか?
なお、目的としては、OUTLOOK内に「iCloud内の予定表」という予定表があり、これがiCloudによりiPADやiPhoneへ自動で連携されているので、ここへ予定を追加したいということになります。現状では、iCloud内の予定表ではなく、デフォルトの予定表への登録しかできていません。
Outlook で既定のフォルダー以外の任意のフォルダーを取得したい場合、フォルダーのツリーを展開するように取得していきます。フォルダー ツリーのルートは Session
オブジェクトの Folders
により取得が可能であり、例えば Set myFolder = Session.Folders("iCloud")
というようにすると、フォルダー一覧の "iCloud" フォルダーが取得できます。そのフォルダーの下を取得する場合は、さらに Folders
を使って掘り下げていくことになります。例えば、iCould にある "予定表" フォルダーなら Set myFolder = Session.Folders("iCloud").Folders("予定表")
です。
そして、このように取得したフォルダーにアイテムを追加する場合は、フォルダーの Items
コレクションの Add
メソッドにより追加します。
以下は、iCould 内の予定表に現在時刻から1時間後の予定を追加するマクロのサンプルです。
' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub CreateAppointmentInCustomFolder()
Dim fldCalendar As Folder
Dim apptItem As AppointmentItem
Set fldCalendar = Session.Folders("iCould").Folders("予定表")
Set apptItem = fldCalendar.Items.Add
apptItem.Subject = "Sample"
apptItem.Body = "Sample body"
apptItem.Start = DateAdd("h", 1, Now)
apptItem.Display
apptItem.Save
End Sub