三流君 ken3のmemo置き場

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

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
Ken3三流君の連絡先:
[google formsで連絡する]
上記の問い合わせフォームに質問・感想など気軽に書き込んでください

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

Outlookのフォルダー を 探ってみた アイテムとサブフォルダー

Outlookのアイテム(メール、連絡先、仕事、予定...)
は、
フォルダーの下にぶら下がってます。

.GetDefaultFolder で 既定のフォルダーを指定すると便利です

OlDefaultFolders 列挙 をヘルプで見ると、
現在の Outlook プロファイルで扱うフォルダ タイプを指定します。
名前 値 説明
olFolderCalendar 9 予定表フォルダ。
olFolderConflicts 19 競合フォルダ (同期の失敗フォルダのサブフォルダ)。Exchange アカウントの場合のみ。
olFolderContacts 10 連絡先フォルダ。
olFolderDeletedItems 3 削除済みアイテム フォルダ。
olFolderDrafts 16 下書きフォルダ。
olFolderInbox 6 受信トレイ フォルダ。
olFolderJournal 11 履歴フォルダ。
olFolderJunk 23 迷惑メール フォルダ。
olFolderLocalFailures 21 ローカルの失敗フォルダ (同期の失敗フォルダのサブフォルダ)。Exchange アカウントの場合のみ。
olFolderManagedEmail 29 管理対象のフォルダ グループの最上位フォルダ。管理対象のフォルダについて詳しくは、Microsoft Office Outlook のヘルプを参照。Exchange アカウントの場合のみ。
olFolderNotes 12 メモ フォルダ。
olFolderOutbox 4 送信トレイ フォルダ。
olFolderSentMail 5 送信済みアイテム フォルダ。
olFolderServerFailures 22 サーバーの失敗フォルダ (同期の失敗フォルダのサブフォルダ)。Exchange アカウントの場合のみ。
olFolderSyncIssues 20 同期の失敗フォルダ。Exchange アカウントの場合のみ。
olFolderTasks 13 仕事フォルダ。
olFolderToDo 28 To Do フォルダ。
olPublicFoldersAllPublicFolders 18 Exchange パブリック フォルダ ストア内の All Public Folders フォルダ。Exchange アカウントの場合のみ。
olFolderRssFeeds 25 RSS フィード フォルダ。

などが、指定できます。

.Display で 画面に表示します。

.Items.Count でアイテム数
.Items(n) で取り出したり、

.Folders("名前") で サブフォルダーを指定したり、
.Folders.Count で サブフォルダーの数がわかるので、
ループで回して、
.Folders.Item(n) で n番目のフォルダーを使用したりできます。

簡単な解説動画

いつもの、右往左往している、怪しい実演動画です。
Outlook怪しい実演動画
www.youtube.com

テストで作ったコード

'フォルダーとその下のアイテムを探る。。。Outlook2007でテスト
Sub tset()
    
    Dim oNamespace As NameSpace
    
    Dim oFolder As Outlook.Folder 'フォルダー
    Dim mITEM As Outlook.MailItem 'メールアイテム
    Dim n As Integer              'ループのカウンター
    Dim subFolder As Folder       'サブフォルダー1つ下を探る
    Dim c As Integer              'フォルダのループカウンタ
    
    ' NameSpace オブジェクトへの参照を取得します。
    Set oNamespace = Application.GetNamespace("MAPI")
    
    ' 既定のフォルダへの参照を取得し、フォルダを表示します。
    Set oFolder = oNamespace.GetDefaultFolder(olFolderInbox) '受信トレイを指定
    oFolder.Display   '選択したフォルダーの表示
    'Set Application.ActiveExplorer.CurrentFolder = oFolder
    
    'フォルダーの下には ITEMここではメール と サブフォルダーが存在します
    
    '受信トレイ直下のアイテム・メールの件名を表示
    'メール数分ループ
    Debug.Print "メールの数は " & oFolder.Items.Count
    For n = 1 To oFolder.Items.Count 'アイテム数分ループ
        Set mITEM = oFolder.Items(n)
        '↑代入が終わったので、各プロパティに mITEM.XXXX で アクセスする
        Debug.Print "件名:" & mITEM.Subject  '件名表示
    Next
    Debug.Print "---"
    
    'サブフォルダー
    Debug.Print "サブフォルダーの数は " & oFolder.Folders.Count
    Debug.Print "---"
    
    For c = 1 To oFolder.Folders.Count  'サブフォルダーの数だけループする
    
        Set subFolder = oFolder.Folders.Item(c) 'c番目のフォルダーを代入
        Set Application.ActiveExplorer.CurrentFolder = subFolder  '移動
        
        'サブフォルダーのメール数分ループ
        Debug.Print "サブフォルダ名: " & subFolder.Name & " には、"
        Debug.Print "メールが " & subFolder.Items.Count & "通"
        
        For n = 1 To subFolder.Items.Count 'アイテム数分ループ
            Set mITEM = subFolder.Items(n)
            '↑代入が終わったので、各プロパティに mITEM.XXXX で アクセスする
            Debug.Print "件名:" & mITEM.Subject '件名表示
        Next
        Debug.Print "---"
    
    Next
    
    '使用したオブジェクトの解放 = Nothing
    Set mITEM = Nothing
    Set subFolder = Nothing
    Set oFolder = Nothing
    Set oNamespace = Nothing

End Sub

終わりの挨拶

まだまだ、探りかたとサンプルが甘いけど、

三流君VBAでOutlookを操作する
三流君 Outlook Mail メールを操作する
三流君 Outlook Task 仕事・タスクを操作する
三流君 Outlook Appointment 予定表を操作する
三流君 Outlook Contact 連絡先・アドレス帳を操作する

で、細々解説しているので、良かったらのぞきにきてください。


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

[Googleフォームにコメントを残す]
↑質問・コメントの入力フォームです、気軽に書いてください


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

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


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