Outlookで受信メールや予定表、タスクなどのデータ取得で何かと使うことが多い
GetNamespaceメソッドですが、
・引数は何を指定していいかわからない…
・実行したがエラーとなった
ということはないでしょうか。
今回はそんなときに役立つ
・GetDefaultFolderメソッドの構文について
・GetDefaultFolderメソッドのフォルダの種類と指定できる引数
・GetDefaultFolderメソッドのサンプルプログラム
についてまとめます!
もくじ
NamespaceオブジェクトとGetNamespaceメソッドとは?
NamespaceオブジェクトはOutlookApplicationオブジェクトのひとつで、Outlookのメール、予定表、メモ、連絡先などOutlookの様々なデータを保有しています。
Namespaceオブジェクトを取得するには、
GetNamespaceメソッドに”MAPI”という名前空間を指定して取得します。
ですので、GetNamespaceメソッドはNamespaceオブジェクトを取得するメソッドという意味になります。
以下はサンプルコードです。
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
取得したデータは規定に設定されている個人用のフォルダへ種類別に格納されています。
次は個人用のフォルダからデータを取得するメソッドについて説明をします。

GetDefaultFolderメソッドとは?
個人用のフォルダからデータを取得するメソッドは
Namespaceオブジェクト.GetDefaultFolderメソッドとなります。
GetDefaultFolderメソッドは引数で指定されたフォルダオブジェクトを返します。
例えば受信トレイをフォルダ指定すると受信トレイに入っているアイテムがオブジェクトとして取得できるというものです。
対象アカウントは前述の通り、Outlook上で「規定」と指定されているアカウントが対象となります。

GetDefaultFolderメソッドの構文は?
GetDefaultFolderメソッドの構文は以下の通りです。
「<フォルダの種類>」に取得したいフォルダの種類をパラメータ指定するだけです。
参考:https://docs.microsoft.com/ja-jp/office/vba/api/outlook.store.getdefaultfolder
Namespaceオブジェクト.GetDefaultFolder(<フォルダの種類>)
GetDefaultFolderメソッドで操作できるフォルダーの種類と指定できる引数はなに?
GetDefaultFolderメソッドで操作できるフォルダーの種類と指定できる引数は以下の通りです。
指定値 | 値 | フォルダの種類 |
---|---|---|
olFolderDeletedItems | 3 | 削除済みアイテムフォルダ |
olFolderOutbox | 4 | 送信トレイフォルダ |
olFolderSentMail | 5 | 送信済みメールフォルダ |
olFolderInbox | 6 | 受信トレイフォルダ |
olFolderCalendar | 9 | カレンダーフォルダ |
olFolderContacts | 10 | 連絡先フォルダ |
olFolderJournal | 11 | Journalフォルダ |
olFolderNotes | 12 | Notesフォルダ |
olFolderTasks | 13 | タスクフォルダ |
olFolderDrafts | 16 | 下書きフォルダ |
olPublicFoldersAllPublicFolders | 18 | Exchangeパブリックフォルダストアのすべてのパブリックフォルダフォルダ ※Exchangeアカウントでのみ使用できます |
olFolderConflicts | 19 | Conflictsフォルダー(SyncIssuesフォルダーのサブフォルダー) ※Exchangeアカウントでのみ使用できます |
olFolderSyncIssues | 20 | 同期の問題フォルダー |
olFolderLocalFailures | 21 | Local Failuresフォルダー(SyncIssuesフォルダーのサブフォルダー) ※Exchangeアカウントでのみ使用できます |
olFolderServerFailures | 22 | サーバー障害フォルダー(同期の問題フォルダーのサブフォルダー) ※Exchangeアカウントでのみ使用できます |
olFolderJunk | 23 | 迷惑メールフォルダ |
olFolderRssFeeds | 25 | RSSフィードフォルダ |
olFolderToDo | 28 | ToDoフォルダー |
olFolderManagedEmail | 29 | 管理フォルダーグループの最上位フォルダー ※Exchangeアカウントでのみ使用できます |
olFolderSuggestedContacts | 30 | 提案された連絡先フォルダ |
GetDefaultFolderメソッドのサンプルプログラムは?
GetDefaultFolderメソッドのサンプルプログラム(VBA)は以下の通りです。
Outlookの開発タブを有効にし、マクロを実装して実行してみてください。
VBAの設定方法がわからない方はこちらをご参照ください。
GetDefaultFolderメソッドで指定期間の受信トレイ一覧を取得
GetDefaultFolderメソッドで指定期間の受信トレイ一覧を取得するサンプルVBAとなります。
期間は2020年10月1日から2日までを指定しています。
期間を変更したい場合は以下の日付を変更してください。
strStart = Format(“2020/10/1”, “yyyy/mm/dd”) ‘開始日を指定
strEnd = Format(“2020/10/2”, “yyyy/mm/dd”) ‘終了日を指定
Sub 指定日の受信トレイメールアイテムを取得()
'Outlook用の定義
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Folder
Dim olConItems
Dim olItem
Dim strStart As String
Dim strEnd As String
'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの受信トレイを取得します。
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)
Set olConItems = olFolder.Items
strStart = Format("2020/10/1", "yyyy/mm/dd") '開始日を指定
strEnd = Format("2020/10/2", "yyyy/mm/dd") '終了日を指定
strEnd = DateAdd("d", 1, strEnd) ' 1日追加
'Restrictメソッドで期間指定して抽出するメールアイテムを絞り込む
Set olConItems = olConItems.Restrict("[ReceivedTime] >= '" & strStart & "' And [ReceivedTime] < '" & strEnd & "'")
For Each olItem In olConItems
With olItem
Debug.Print "受信日:" & .ReceivedTime
Debug.Print "タイトル:" & .Subject
End With
Next
'オブジェクトクリア
Set olItem = Nothing
Set olConItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
End Sub
はい、受信トレイのメールアイテムが取得できましたね!
GetDefaultFolderメソッドで指定期間の予定一覧を取得
GetDefaultFolderメソッドで指定期間の予定一覧を取得するサンプルVBAとなります。
期間は2020年10月1日から2日までを指定しています。
期間を変更したい場合は以下の日付を変更してください。
strStart = Format(“2020/10/1”, “yyyy/mm/dd”) ‘開始日を指定
strEnd = Format(“2020/10/2”, “yyyy/mm/dd”) ‘終了日を指定
Sub 指定日の会議表アイテムを取得()
'Outlook用の定義
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Folder
Dim olConItems As Outlook.Items
Dim olItem As AppointmentItem
Dim strStart As String
Dim strEnd As String
'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの予定表を取得します。
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olFolder = olNamespace.GetDefaultFolder(olFolderCalendar)
Set olConItems = olFolder.Items
strStart = Format("2020/10/1", "yyyy/mm/dd") '開始日を指定
strEnd = Format("2020/10/2", "yyyy/mm/dd") '終了日を指定
strEnd = DateAdd("d", 1, strEnd) ' 1日追加
'Findメソッドで期間指定して抽出するスケジュールを絞り込む
Set olItem = olConItems.Find("[End] < """ & strEnd & """ AND [Start] >= """ & strStart & """")
While TypeName(olItem) = "AppointmentItem"
'Findで検索すると期間範囲外の余計なものまでヒットしてしまうので、再度フィルタリングします。
If olItem.Start >= strStart And olItem.End < strEnd Then
With olItem
Debug.Print "タイトル:" & .Subject
Debug.Print "場所:" & .Location
Debug.Print "開始日時:" & .Start
Debug.Print "終了日時:"; .End
End With
lnContactCount = lnContactCount + 1
End If
Set olItem = olConItems.FindNext
Wend
'オブジェクトクリア
Set olItem = Nothing
Set olConItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
End Sub
はい、指定期間の予定表が取得できましたね!
GetDefaultFolderメソッドで指定期間のタスクアイテムを取得
GetDefaultFolderメソッドで指定期間のタスクアイテムを取得するサンプルVBAとなります。
期間は2020年10月1日から2日までを指定しています。
期間を変更したい場合は以下の日付を変更してください。
strStart = Format(“2020/10/1”, “yyyy/mm/dd”) ‘開始日を指定
strEnd = Format(“2020/10/2”, “yyyy/mm/dd”) ‘終了日を指定
Sub 指定日のタスクアイテムを取得()
'Outlook用の定義
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Folder
Dim olConItems
Dim olItem
Dim strStart As String
Dim strEnd As String
'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの受信トレイを取得します。
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olFolder = olNamespace.GetDefaultFolder(olFolderTasks)
Set olConItems = olFolder.Items
strStart = Format("2020/10/1", "yyyy/mm/dd") '開始日を指定
strEnd = Format("2020/10/2", "yyyy/mm/dd") '終了日を指定
strEnd = DateAdd("d", 1, strEnd) ' 1日追加
'Restrictメソッドで期間指定して抽出するタスクアイテムを絞り込む
Set olConItems = olConItems.Restrict("[DueDate] >= '" & strStart & "' And [DueDate] < '" & strEnd & "'")
For Each olItem In olConItems
With olItem
Debug.Print "期限:" & .DueDate
Debug.Print "タイトル:" & .Subject
End With
Next
'オブジェクトクリア
Set olItem = Nothing
Set olConItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
End Sub
はい!指定期間のタスクが取得できましたね!
GetDefaultFolderメソッドで指定期間のメモアイテムを取得
GetDefaultFolderメソッドで指定期間のメモアイテムを取得するサンプルVBAとなります。
期間は2020年10月1日から2021年10月31日までを指定しています。
期間を変更したい場合は以下の日付を変更してください。
strStart = Format(“2020/10/1”, “yyyy/mm/dd”) ‘開始日を指定
strEnd = Format(“2021/10/31”, “yyyy/mm/dd”) ‘終了日を指定
Sub 指定日のメモアイテムを取得()
'Outlook用の定義
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Folder
Dim olConItems
Dim olItem
Dim strStart As String
Dim strEnd As String
'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの受信トレイを取得します。
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olFolder = olNamespace.GetDefaultFolder(olFolderNotes)
Set olConItems = olFolder.Items
strStart = Format("2020/10/1", "yyyy/mm/dd") '開始日を指定
strEnd = Format("2021/10/31", "yyyy/mm/dd") '終了日を指定
strEnd = DateAdd("d", 1, strEnd) ' 1日追加
'Restrictメソッドで期間指定して抽出するメモアイテムを絞り込む
Set olConItems = olConItems.Restrict("[CreationTime] >= '" & strStart & "' And [CreationTime] < '" & strEnd & "'")
For Each olItem In olConItems
With olItem
Debug.Print "作成日:" & .CreationTime
Debug.Print "タイトル:" & .Subject
Debug.Print "メモ本文:" & .Body
End With
Next
'オブジェクトクリア
Set olItem = Nothing
Set olConItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
End Sub
はい!指定期間のメモが取得できましたね!

さいごに
いかがでしょうか?
今回は、
・GetDefaultFolderメソッドの構文について
・GetDefaultFolderメソッドのフォルダの種類と指定できる引数
・GetDefaultFolderメソッドのサンプルプログラム
についてまとめました。
GetNamespaceメソッドとGetDefaultFolderメソッドはよく使いますので、
しっかり構文と引数を覚えておきたいですね。
コメントを残す