前回の回答
XXXXXさんへ ExcelでOutlookの受信メールを読むサンプル - 三流君 ken3のmemo置き場
http://d.hatena.ne.jp/ken3memo/20120415/1334453463
が失敗した と 感じたので、追加メッセージ・・・(ぉぃぉぃ)
>if subFolder.name="****" Then
など、処理したいフォルダーの名前がわかっているなら(固定なら)
そんな時は、
ドットで重ねてフォルダーを指定するといいかも?
'メールアイテムの処理
For Each mITEM In oFolder.Folders("テストサブ").Folders("sub3333").Folders("sub44444").Items 'アイテム数分ループ
'↑代入が終わったので、各プロパティに mITEM.XXXX で アクセスする
こんな感じで、フォルダー名が固定なら、
カッコ悪いのですが、
サブの下の サブ... の メールアイテムを取得することもできます。
下記のソースコードと合わせてみてください。
テスト・解説動画 : http://www.youtube.com/watch?v=R_IfnBPJR1w
www.youtube.com
テストで使用したソースコード
Option Explicit '受信メールをexcelで読み込むサンプル 'Excel2007 と Outlook2007 で テスト '参照設定を してください。 Sub main0415() 'メイン処理 Dim y As Integer 'Y行目 Dim oNamespace As Namespace Dim oFolder As Outlook.Folder 'フォルダー Dim oApp As Outlook.Application Set oApp = CreateObject("Outlook.Application") 'データの表示エリアをクリアする Rows("10:9999").Delete Shift:=xlUp '10行目から削除する Range("a1").Select ' NameSpace オブジェクトへの参照を取得します。 Set oNamespace = oApp.GetNamespace("MAPI") ' 既定のフォルダへの参照を取得し、フォルダを表示します。 Set oFolder = oNamespace.GetDefaultFolder(olFolderInbox) '受信トレイを指定 oFolder.Display '選択したフォルダーの表示 '表示関数を呼ぶ y = 10 '10行目からセット Dim mITEM As Outlook.MailItem 'メールアイテム Dim n As Integer 'ループのカウンター Dim c As Integer 'フォルダのループカウンタ 'テストで名前の表示 Debug.Print oFolder.Name 'フォルダーの下には サブフォルダーとアイテムが存在します 'メールアイテムの処理 For Each mITEM In oFolder.Folders("テストサブ").Folders("sub3333").Folders("sub44444").Items 'アイテム数分ループ '↑代入が終わったので、各プロパティに mITEM.XXXX で アクセスする Debug.Print "件名:" & mITEM.Subject '件名表示 '件名表示 データのセット Cells(y, "A") = mITEM.CreationTime Cells(y, "B") = mITEM.SenderName Cells(y, "C") = mITEM.Subject Cells(y, "D") = mITEM.Body y = y + 1 Next '使用したオブジェクトの解放 = Nothing Set mITEM = Nothing oApp.ActiveExplorer.Close '新しく開いてしまったフォルダーを閉じる Set oFolder = Nothing Set oNamespace = Nothing End Sub