全部取得したいわけではなく1/17日分だけ取得といった感じです
別日には1/18日分を取得できるようにできればいいなと思っております
「受信日時が昨日である(現在のシステム日付の前日の 0:00 から 23:59 までの範囲に含まれる)メールのみをリストアップしたい」ということなのであれば、例えば次のようなコードを実行なさればよろしいでしょう。
vba
1Sub OutputReceivedMailsFromOutlook()
2On Error GoTo Err_OutputReceivedMailsFromOutlook
3
4 Const olFolderInbox = 6
5
6 Dim olApp As Object 'Outlook.Application
7 Dim blCreateApp As Boolean
8
9 blCreateApp = False
10 On Error Resume Next
11 '実行中の Outlook アプリケーションの参照
12 Set olApp = GetObject(, "Outlook.Application")
13 '参照できなかった場合
14 If Err.Number <> 0 Then
15 Err.Clear
16 On Error GoTo Err_OutputReceivedMailsFromOutlook
17 'Outlook アプリケーションの新規インスタンスの生成
18 Set olApp = CreateObject("Outlook.Application")
19 'アプリケーション起動フラグを True に
20 blCreateApp = True
21 End If
22 On Error GoTo Err_OutputReceivedMailsFromOutlook
23
24 Dim olNamespace As Object 'Outlook.Namespace
25 Dim olInBoxFolder As Object 'Outlook.Folder
26 Dim olTargetFolder As Object 'Outlook.Folder
27 Dim olMailItems As Object 'Outlook.Items
28
29 '受信トレイの参照
30 Set olNamespace = olApp.GetNamespace("MAPI")
31 Set olInBoxFolder = olNamespace.GetDefaultFolder(olFolderInbox)
32
33 '受信トレイ内のフォルダの参照
34 Set olTargetFolder = olInBoxFolder.Folders("フォルダー名")
35 'フォルダ内のメールアイテムコレクションの参照
36 Set olMailItems = olTargetFolder.Items
37
38 Dim wbBook As Workbook
39 Dim wsSheet As Worksheet
40 Dim lngRow As Long
41
42 '新規ブックの作成
43 Set wbBook = Workbooks.Add
44 'その1つめのワークシートの参照
45 Set wsSheet = wbBook.Worksheets(1)
46 '出力先行番号を1から開始
47 lngRow = 1
48
49 'ワークシートの列見出しの設定
50 With wsSheet
51 .Cells(lngRow, 1).Value = "差出人の表示名"
52 .Cells(lngRow, 2).Value = "件名"
53 .Cells(lngRow, 3).Value = "受信日時"
54 .Cells(lngRow, 4).Value = "本文"
55 End With
56
57 Dim dtStartDate As Date
58 Dim dtEndDate As Date
59 Dim strStartDate As String
60 Dim strEndDate As String
61 Dim strFilter As String
62 Dim lngHitCount As Long
63 Dim olMailItem As Object 'Outlook.MailItem
64
65 '日時範囲の開始日時を指定
66 dtStartDate = DateAdd("d", -1, Date)
67 '日時範囲の終了日時を指定
68 dtEndDate = DateAdd("s", -1, DateAdd("d", 1, Date))
69
70 '受信日時に対する検索条件式の生成
71 strStartDate = Format(dtStartDate, "ddddd h:nn AMPM")
72 strEndDate = Format(dtEndDate, "ddddd h:nn AMPM")
73 strFilter = "[ReceivedTime] >= """ & strStartDate & """ AND [ReceivedTime] <= """ & strEndDate & """"
74 '検索条件式をイミディエイトウィンドウに出力(デバッグ用)
75 Debug.Print strFilter
76
77 'ヒットカウンタの初期化
78 lngHitCount = 0
79
80 '条件に該当する最初のアイテムを検索
81 Set olMailItem = olMailItems.Find(strFilter)
82
83 'ヒットしなくなくなるまでループ
84 Do Until olMailItem Is Nothing
85 'ヒットカウンタのインクリメント
86 lngHitCount = lngHitCount + 1
87 '出力先行番号のインクリメント
88 lngRow = lngRow + 1
89 '各プロパティの値をワークシートの各列に書き出す
90 wsSheet.Cells(lngRow, 1).Value = olMailItem.SenderName
91 wsSheet.Cells(lngRow, 2).Value = olMailItem.Subject
92 wsSheet.Cells(lngRow, 3).Value = olMailItem.ReceivedTime
93 wsSheet.Cells(lngRow, 4).Value = olMailItem.Body
94 '次のアイテムを検索
95 Set olMailItem = olMailItems.FindNext
96 Loop
97
98 'ワークシートの列幅の自動調整
99 wsSheet.UsedRange.EntireColumn.AutoFit
100
101 'ヒット件数をメッセージボックスに表示
102 MsgBox "ヒットしたメールアイテムは " & lngHitCount & " 件です。", _
103 vbInformation, _
104 "検索完了"
105
106Exit_OutputReceivedMailsFromOutlook:
107On Error Resume Next
108
109 Set olMailItem = Nothing
110 Set olMailItems = Nothing
111 Set olTargetFolder = Nothing
112 Set olInBoxFolder = Nothing
113 Set olNamespace = Nothing
114 'このプロシージャによって Outlook が起動された場合
115 If blCreateApp Then
116 'Outlook の終了
117 olApp.Quit
118 End If
119 Set olApp = Nothing
120
121 Set wsSheet = Nothing
122 Set wbBook = Nothing
123
124 Exit Sub
125
126Err_OutputReceivedMailsFromOutlook:
127
128 MsgBox Err.Number & ": " & Err.Description, _
129 vbCritical, _
130 "実行時エラー(OutputReceivedMailsFromOutlook)"
131
132 Resume Exit_OutputReceivedMailsFromOutlook
133End Sub