帯

VBA Outlook PSTを開く

Outlookでやりとりしたメールが増えてくると、それを整理するために「Outlook データファイル (.pst)」を利用する場合があると思います。
さらにデータが増えてくると、「Outlook データファイル (.pst)」を複数作成して、分類分けしたり、年度別に分けたりして整理するようになると思います。

そんな複数作成した「Outlook データファイル (.pst)」を、簡単にOutlookに追加・削除するVBAプログラムを作っていきたいと思います。

Outlookデータファイルの作成

まずは、「Outlook データファイル」を作成します。
作成した「Outlook データファイル」はパソコン上の任意の場所に置けばよいのですが、ここでは分かりやすく、C:ドライブのルートに「C:\PST」フォルダを作り、そこに登録する前提で話を進めます。

「ホーム」タブの「新しいアイテム」ー「その他のアイテム」ー「Outlookデータファイル」を選択します。

「新しい Outlook データファイル」ダイアログで、
「Outlook データファイル (.pst)」を選択して「OK」ボタンを押します。

「Outlook データファイルを開くまたは作成する」ダイアログで、
ファイル名を入力して、「OK」ボタンを押します。
ここでは、ファイル名を「2019」とし、保存先を「C:\PST」としました。

Outlook データファイル「2019」が作成され、開かれました。
フォルダーを作って整理するような場合は、「2019」を選択、右クリックして「フォルダーの作成」を選択します。

フォルダー名を入力して、フォルダーを作成します。ここでは、「受信済み」というフォルダー名でフォルダーを作成してみました。

Outlookデータファイルを閉じる

Outlookデータファイルを閉じるのは簡単です。「Outlookデータファイル」を選択、右クリックして「(名前) を閉じる」を選択するだけです。

プログラムによるOutlookデータファイルの操作

OutlookのVBEを開き、標準モジュール「ModulePST」を挿入して、次のプログラムを書き込みます。
VBEの基本的な操作手順は「VBA Outlook開発環境の整備」を参考にしてください。

Option Explicit

Private Const PST_FILE_2019 = "C:\PST\2019.pst"

Public Sub OpenPST_2019()
    Call OpenPST(PST_FILE_2019)
End Sub

Public Sub ClosePST_2019()
    Call ClosePST(PST_FILE_2019)
End Sub

Private Sub OpenPST(sFilePath As Variant)
    Application.Session.AddStore sFilePath
End Sub

Private Sub ClosePST(sFilePath As Variant)
    With Application.Session
        Dim i As Long
        For i = 1 To .Stores.Count
            If .Stores.Item(i).FilePath = sFilePath Then
                .RemoveStore .Folders.Item(i)
                Exit For
            End If
        Next i
    End With
End Sub

Outlookにそのままインポートできるモジュールファイルを以下に添付しますので、ダウンロードしてファイルインポートしてもよいです。

プログラムを組込み後のVBEイメージです。

プログラムの動作確認

それでは組み込んだプログラムの動作を確認します。
Outlookの「開発」タブで、「マクロ」ー「Project1.OpenPST_2019」を選択すると、先ほど作成したOutlookデータファイル「2019」が開かれます。同様に「Project1.ClosePST_2019」を選択すると、Outlookデータファイル「2019」が閉じられます。

プログラムの解説

プログラムの主な内容を説明します。

OpenPSTは、ファイルパスで指定されたOutlookデータファイルを開く関数です。AddStoreで指定のOutlookデータファイルが追加されます。

ClosePSTは、ファイルパスで指定されたOutlookデータファイルを閉じる関数です。Stores.Itemの中からファイルパスの一致するアイテムを検索してRemoveStoreで取り外します。

Private Sub OpenPST(sFilePath As Variant)
    Application.Session.AddStore sFilePath
End Sub

Private Sub ClosePST(sFilePath As Variant)
    With Application.Session
        Dim i As Long
        For i = 1 To .Stores.Count
            If .Stores.Item(i).FilePath = sFilePath Then
                .RemoveStore .Folders.Item(i)
                Exit For
            End If
        Next i
    End With
End Sub

さいごに

Outlook データファイルを開く(閉じる)簡単なプログラムを作成しました。

今回はOutlook データファイルのファイルパスをプログラム内にハードコーディングしましたが、Outlook データファイルが増えるたびにプログラムをいじるのはスマートではありません。

次回は、このファイルパスをプログラムの外に分離して、「VBA Outlookメール宛名書きメニュー化」で作成したメニューモジュールで選択できるようにする予定です。

記事を気に入って頂き、お役に立てたら嬉しいです。