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 連絡先・アドレス帳を操作する
で、細々解説しているので、良かったらのぞきにきてください。