Outlookへ予定を登録後、CalendarViewModeを変更して、カレンダーの表示を変える。
そんな処理にチャレンジしてみました。
Outlookを複数起動していたので、いつも以上にデバッグでハマってしまいました。
お蔵入りレベルのムゴイ動画ですが、よろしくお願いします・・・
youtu.be
https://youtu.be/P0vmlc5GiCI
目次
00:00 0.あいさつ・やりたいこと
01:48 簡単なコード説明
02:23 愛犬に説明間違っているぞ と 吠えられる
03:42 CalendarViewModeのテスト
06:28 終了予定<開始予定だとエラー
07:23 複数Outlookが起動しているとうまくアクティブな予定表が取得できない
知恵袋の質問
detail.chiebukuro.yahoo.co.jp
に、
1.Outlook予定表に登録
2.書き込み後に日ビュー表示
とあったので、チャレンジしてみます。
#OutlookVBA #マクロ #予定表 #カレンダー #ExcelVBA #MSExcel #デバッグ #CalendarViewMode
[VBA]Excel ➞ Outlook予定表に書込み
について教えてください
Sheet1
A2…件名
B2…場所
C2…開始日時
D2…終了日時
E2…本文
F2…対象者名
G2…メールアドレス
が入力されていますCommandButton1をクリックした時の動きで
①上記の人のOutlook予定表に登録し
②書き込み後に日ビュー表示を希望します①は色々なサイトに方法があるので、何となくわかるのですが
②が全く解りません
(Displayで開けるのですが、月ビューになってしまいます)そもそも、②を日ビューで表示する設定があるかも解らないのですが、もしご存知の方がいらしたら是非教えてください(〃∀〃)
よろしくお願い致します
作成したサンプルソースコード
Option Explicit Private Sub CommandButton1_Click() Dim oApp As Object 'As Outlook.Application OutlookのApplication オブジェクトを入れる 'outlook 起動をCreateObjectで ※これだと複数起動してしまうがご勘弁を Set oApp = CreateObject("Outlook.Application") Dim aITEM 'As Outlook.AppointmentItem '予定、アポ 'CreateItemで予定の作成 Set aITEM = oApp.CreateItem(1) 'olAppointmentItem=1 1予定・アポを指定 aITEM.Display '編集画面表示 いらないですね。 'データのセット aITEM.Subject = Range("A2") 'A2…件名 'B2…場所 aITEM.Start = Range("C2") 'C2…開始日時 aITEM.End = Range("D2") 'D2…終了日時 aITEM.Body = Range("E2") 'E2…本文 'F2…対象者名 'G2…メールアドレス '動作 'aITEM.Save '.Saveで保存 .Close時に下記みたいに閉じると同時に保存も可能 aITEM.Close 0 '保存して閉じる olSave=0 olDiscard=1 olPromptForSave=2 ' Dim oNamespace As Object 'Namespace Dim oFolder As Object 'Outlook.Folder 'フォルダー ' NameSpace オブジェクトへの参照を取得します。 Set oNamespace = oApp.Session ' 既定のフォルダへの参照を取得し、フォルダを表示します。 'olFolderCalendar 9 予定表フォルダー。 Set oFolder = oNamespace.GetDefaultFolder(9) '9予定表フォルダー oFolder.Display '選択したフォルダーの表示 Dim oCalView As Object 'Outlook.CalendarView カレンダー Set oCalView = oApp.ActiveExplorer.CurrentView 'アクティブビュー ※こっち? 'Set oCalView = oFolder.CurrentView '予定表フォルダーのビューをセットだと違う? 'カレンダー日付の選択 'oCalView.GoToDate Now() '現在時刻・当日にするのも一つの手 oCalView.GoToDate Range("C2") 'C2…開始日時 をここではセット oCalView.CalendarViewMode = 0 '0:olCalendarViewDay 1:olCalendarViewWeek oCalView.Save '※.saveにおどろく、これが無いと表示更新されない MsgBox "処理終了" End Sub
1.ポイントは、
Set oFolder = oNamespace.GetDefaultFolder(9) '9予定表フォルダー
oFolder.Display '選択したフォルダーの表示
でいつものように、予定表を表示したら、
2.As Outlook.CalendarView がカレンダー表示関係なので、
ここをいじります。
Dim oCalView As Object 'As Outlook.CalendarView カレンダー
Set oCalView = oFolder.CurrentView '予定表フォルダーのビューをセット※こちらで
↑で取得したら、
3.CalView.GoToDate 目的の日に飛ばします。ここでは、作成した予定の日にします
'カレンダー日付の選択
oCalView.GoToDate Range("C2") 'C2…開始日時 をここではセット
4.あとは、モード CalendarViewMode をセットするだけ。
oCalView.CalendarViewMode = 0 '0:olCalendarViewDay 1:olCalendarViewWeek
oCalView.Save '※.saveにおどろく、これが無いと表示更新されない
↑ハマったのが、この.Save...これがないと・・・
OlCalendarViewMode 列挙 (Outlook)
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.olcalendarviewmode
docs.microsoft.com
名前 値 説明
olCalendarView5DayWeek 4 1 週 (5 日) を表示します。
olCalendarViewDay 0 1 日を表示します。
olCalendarViewMonth 2 1 月を表示します。
olCalendarViewMultiDay 3 CalendarView オブジェクトの DaysInMultiDayMode プロパティ値に等しい日数 を表示 します。
olCalendarViewWeek 1 1 週 (7 日) を表示します。
CalendarView.CalendarViewMode プロパティ (Outlook)
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.calendarview.calendarviewmode
docs.microsoft.com
を
参考にいろいろアレンジして、作成してみてください。
解決のヒントとなれば幸いです。