【OutlookVBA】GetNamespaceメソッドのフォルダの種類と引数はなに?サンプルVBAで解説!

Outlookで受信メールや予定表、タスクなどのデータ取得で何かと使うことが多い
GetNamespaceメソッドですが、

・使い方がいまいちわからない…
・引数は何を指定していいかわからない…
・実行したがエラーとなった

ということはないでしょうか。

今回はそんなときに役立つGetNamespaceメソッドのフォルダの種類と指定できる引数についてまとめと、サンプルプログラをご紹介します!

GetDefaultFolderメソッドとは?

GetDefaultFolderメソッドは引数で指定されたフォルダオブジェクトを返します。

例えば受信トレイをフォルダ指定すると受信トレイに入っているアイテムがオブジェクトとして
ごそっと取得できるというものです。

よく使うのは受信トレイ、予定表、連絡先、タスクなどでしょうか。

なお対象アカウントはOutlook上で「規定」と指定されているアカウントが対象となります。

DefaultFolderは規定で指定したアカウント(ユーザー)のフォルダという意味なんですね。

GetDefaultFolderメソッドの構文は?

GetDefaultFolderメソッドの構文は以下の通りです。

<フォルダの種類>」に取得したいフォルダの種類をパラメータ指定するだけです。

参考:https://docs.microsoft.com/ja-jp/office/vba/api/outlook.store.getdefaultfolder

Namespaceオブジェクト.GetDefaultFolder(<フォルダの種類>)

GetDefaultFolderメソッドはNamespaceオブジェクトと対で使う

GetDefaultFolderメソッドを使用するためには、

Outlookのデータ保管庫という

でかい箱へ接続する必要があります。

そのでかい箱はNamespaceオブジェクトと言われています。

GetDefaultFolderメソッドを使うケースはOutlookのみとなりますので、

Namespaceオブジェクトへ接続することは必須となります。

ですので、GetDefaultFolderメソッドはNamespaceオブジェクトと対で使う

ということを覚えておきましょう。

Namespaceオブジェクトの構文は以下の通りです。

Outlookアプリケーション.GetNamespace(“MAPI”)

OutlookアプリケーションのNamespaceオブジェクトを指定するという意味になります。

なお、”MAPI“というわけのわからない用語がありますが、

取得したいNamespaceの型を指定するというもので

“MAPI”型を指定する」という意味になります。

まあ、型は”MAPI”のみですので、呪文として覚えておきましょう。

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の設定方法がわからない方はこちらをご参照ください。

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

はい!指定期間のメモが取得できましたね!

タカヒロ
タカヒロ
OutlookのメモをExcelへエクスポートする方法についてまとめましたので、よろしければご参照ください。

【VBA】OutlookのメモをExcelへエクスポートする方法!期間指定もあり!

さいごに

いかがでしょうか?

今回は、
GetNamespaceメソッドのフォルダの種類と指定できる引数
についてまとめました。

何かと便利なGetNamespaceメソッドですので、
しっかり構文と引数を覚えておきたいですね。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



タカヒロ

 
タカヒロ  
Excelの基礎がスルスル入ってくるAmazonランク1位の優良Excel本です。
 
この基礎本と応用技が多いエク短と組み合わせれば、短時間で誰よりもExcelが使いこなせるかと思います。
 
2022/1/21(金)23: 59までAmazon限定の「厳選ショートカットキー」DL特典アリです。 >詳細を見てみる 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です