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

OutlookのメモをExcelへエクスポートをしたいときはないでしょうか。

けど、そんな中で悩むことは、

・OutlookのメモをExcelへエクスポートしたいがやり方がわからない。
・Outlook VBAでOutlookのメモをExcelへエクスポートしたいがやり方がわからない。

ですよね。

今回はそんなお悩みを解決する
抽出期間指定でOutlookのメモをExcelへエクスポートする方法について
まとめます!

OutlookのメモをExcelへエクスポートする完成イメージ

OutlookのメモをExcelへエクスポートする完成イメージについて説明をします。

OutlookメモをExcelへ出力する機能はないため、VBAで作り込み実装する必要があります。
実装先は、出力結果を書き込む先のExcelブック側となります。

Excelブック側からスクリプトを実行し以下の流れで処理が行われます。

①Excelブック(VBA) → メモ一覧ちょうだい → Outlook
②Excelブック ← メモ一覧を出すよ ← Outlook

Excel側のVBAを実行すると、

Outlookuのメモ情報が

さくっとExcelのシートへ出力されます!

早速使ってみましょう!

Outlookのメモのエクスポート先のExcelシートを用意する

まずはOutlookメモ出力先のExcelシートを用意しましょう。
Excelブックを新規作成します。

Outlookのメモの内容を確認する

エクスポートの対象となるOutlookのメモの内容を確認しましょう。

OutlookのメモをExcelへエクスポートするVBA

VBAを実装する

新規作成したブックへ、VBAを追加します。

VBAの追加手順については「VBAの実装手順」を参考にしてください。

サンプルコードは以下の通りです。

Sub OutlookのメモをExcelへエクスポートする()

    'Outlook用の定義
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.Namespace
    Dim olFolder As Outlook.MAPIFolder
    Dim olConItems As Outlook.Items
    Dim olItem As Object
    
    'Excel用の定義
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    
    Dim lnContactCount As Long
    Dim strStart As String
    Dim strEnd As String
    
    'メモ取得の対象期間を指定します。
    strStart = Format("2020/10/1", "yyyy/mm/dd") '開始日を指定
    strEnd = Format("2021/10/24", "yyyy/mm/dd")  '終了日を指定
    
    
    'スクリーンの更新は行われません。
    Application.ScreenUpdating = False
    
    'Excelのブックとワークシートのオブジェクトを設定します。
    Set wbBook = ThisWorkbook
    Set wsSheet = wbBook.Worksheets(1)  '1の場合左端の1番目のシートが対象となります。
    
    '書き込み先のセルを指定します。また1行目にタイトルを記述します。
    With wsSheet
        .Range("A1").CurrentRegion.Clear
        .Cells(1, 1).Value = "タイトル"
        .Cells(1, 2).Value = "本文"
        .Cells(1, 3).Value = "カテゴリー"
        .Cells(1, 4).Value = "作成日"
        .Cells(1, 5).Value = "修正日"
        .Cells(1, 6).Value = "色"
        .Cells(1, 7).Value = "サイズ"
        .Cells(1, 8).Value = "EntryID"

        With .Range("A1:Z1")
            .Font.Bold = True
            .Font.ColorIndex = 10
            .Font.Size = 11
        End With
    End With
    
    wsSheet.Activate
    
    'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの連絡先一覧を取得します。
    Set olApp = New Outlook.Application
    Set olNamespace = olApp.GetNamespace("MAPI")
    
    'メモを対象にします。
    Set olFolder = olNamespace.GetDefaultFolder(olFolderNotes)
    Set olConItems = olFolder.Items

    
    'Restrictメソッドで期間指定して抽出するメモアイテムを絞り込みます。
    Set olConItems = olConItems.Restrict("[CreationTime] >= '" & strStart & "' And [CreationTime] <= '" & strEnd & "'")

     
    '取得結果を記述する行番号を指定します。2の場合は2行目のセルから開始されることになります。
    lnContactCount = 2
    
    'メモアイテムを1件づつ取り出し、各値をシートへ出力していきます。
    For Each olItem In olConItems
            With olItem
                Cells(lnContactCount, 1).Value = .Subject  'タイトル
                Cells(lnContactCount, 2).Value = .Body  '本文
                Cells(lnContactCount, 3).Value = .Categories  'カテゴリー
                Cells(lnContactCount, 4).Value = .CreationTime   '作成日
                Cells(lnContactCount, 5).Value = .LastModificationTime  '修正日
                Cells(lnContactCount, 6).Value = .Color  '色
                Cells(lnContactCount, 7).Value = .Size  'サイズ
                Cells(lnContactCount, 8).Value = .EntryID  'EntryID追加
            End With
            lnContactCount = lnContactCount + 1
    Next olItem
    
    'オブジェクトを解放します。
    Set olItem = Nothing
    Set olConItems = Nothing
    Set olFolder = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing
   
    'スクリーンの更新をオンにします。
    Application.ScreenUpdating = True
    
    MsgBox "Outlookメモのエクスポートが完了しました!", vbInformation
    
End Sub

VBAを設定する

VBAを設定していきましょう。

メモ取得の対象期間を指定します。
サンプルでは作成日が”2020/10/1″から”2021/10/24″までとしています。

strStart = Format(“2020/10/1”, “yyyy/mm/dd”) ‘開始日を指定
strEnd = Format(“2021/10/24”, “yyyy/mm/dd”) ‘終了日を指定

タカヒロ
タカヒロ
エクスポートされていないメモがあればこの対象期間内になっているか確認してください。

VBAを実行する

VBAを実行しましょう。

はい!メモの各内容がExcelへエクスポートされていますね!

VBAの説明

OutlookのメモをExcelへエクスポートするVBAの内容について説明をします。

まず、Excelへエクスポートされる値の項目について、以下の通りとなっています。

「タイトル」:メモのタイトル名です。

「本文」:メモの本文となります。

「カテゴリー」:メモのカテゴリー名となります。色分類の名前が入ります。

「作成日」:メモを新規作成した日時が入ります。
「修正日」:メモを修正した日時が入ります。
「色」:色分類のカラー番号が入ります。
「サイズ」:メモのサイズが入ります。単位はバイトです。
「EntryID」:メモアイテムの識別子が入ります。編集の時にアイテムを特定する時などに利用します。

Excelのブックとワークシートのオブジェクトを設定します。
1の場合左端の1番目のシートが対象となります。

Set wbBook = ThisWorkbook
Set wsSheet = wbBook.Worksheets(1)

書き込み先のセルを指定します。また1行目にタイトルを記述します。

With wsSheet
.Range(“A1”).CurrentRegion.Clear
.Cells(1, 1).Value = “タイトル”
.Cells(1, 2).Value = “本文”
.Cells(1, 3).Value = “カテゴリー”
.Cells(1, 4).Value = “作成日”
.Cells(1, 5).Value = “修正日”
.Cells(1, 6).Value = “色”
.Cells(1, 7).Value = “サイズ”
.Cells(1, 8).Value = “EntryID”

Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの連絡先一覧を取得します。

Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace(“MAPI”)

引数「olFolderNotes」でメモフォルダを対象にします。

Set olFolder = olNamespace.GetDefaultFolder(olFolderNotes)

タカヒロ

タカヒロ
他にも予定表やタスクフォルダを指定することが可能です。詳細は以下をご覧ください。

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

Restrictメソッドで期間指定して抽出するメモアイテムを絞り込みます。

Set olConItems = olConItems.Restrict(“[CreationTime] >= ‘” & strStart & “‘ And [CreationTime] <= ‘” & strEnd & “‘”)

取得結果を記述する行番号を指定します。2の場合は2行目のセルから開始されることになります。

lnContactCount = 2

メモアイテムを1件づつ取り出し、各値をシートへ出力していきます。

For Each olItem In olConItems
With olItem
Cells(lnContactCount, 1).Value = .Subject ‘タイトル
Cells(lnContactCount, 2).Value = .Body ‘本文
Cells(lnContactCount, 3).Value = .Categories ‘カテゴリー
Cells(lnContactCount, 4).Value = .CreationTime ‘作成日
Cells(lnContactCount, 5).Value = .LastModificationTime ‘修正日
Cells(lnContactCount, 6).Value = .Color ‘色
Cells(lnContactCount, 7).Value = .Size ‘サイズ
Cells(lnContactCount, 8).Value = .EntryID ‘EntryID追加

VBAの実装手順

実装手順は以下の通りです。

今回はExcel側にこのVBAを実装します。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

次にExcelでOutlookの機能を有効化するための設定を行います。

①VBEのメニューから「ツール」>「参照設定」を選択します。

②「Microsoft Outlook XX.X Object Library」を探してチェックボックスにチェックし「OK」をクリックします。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし「OutlookのメモをExcelへエクスポートする」を選択し、「実行」をクリックします。

②「Outlookメモのエクスポートが完了しました!」が表示されたら完了です。

さいごに

いかがでしょうか。

今回は、
抽出期間指定でOutlookのメモをExcelへエクスポートする方法について
まとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



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

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



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

コメントを残す

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