三流君 ken3のmemo置き場

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

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

よく検索されるキーワード: [質問回答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 連絡先・アドレス帳を操作する

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

Ken3 ホームページ 目次

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

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



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