三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:「こんな感じ」や「あの、あの」と活舌の悪い、
三流プログラマーのオッサンです

当ブログではGoogle AdSenseおよび各種アフィリエイトプログラムを利用して広告を配信しています。

Outlook予定表に書込み 登録後カレンダー表示 CalendarViewModeを1日単位の日ビュー表示にする

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

を
参考にいろいろアレンジして、作成してみてください。

解決のヒントとなれば幸いです。


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

当ブログではGoogle AdSenseおよび各種アフィリエイトプログラムを利用して広告を配信しています。


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~