三流君 ken3のmemo置き場

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

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

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

VBAExcelOutlook予定表に書込み
について教えてください
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


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

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

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)