VBA: OutlookのメールをExcelにオブジェクトとして挿入する

Outlookで受信したメールは、Excelにオブジェクトとして挿入することができるのですが、作業の手数が多く、結構面倒だったりします。

そこで、Outlookで選択しているメールを、ワンボタンでExcelに挿入する方法を考えましたので紹介します。

Outlook上でメールを選択し・・・
Excel上で実行ボタンを押すと・・・
メールがオブジェクトとして挿入される

この記事で紹介する方法は、Excel VBAを使用するため、通常のExcelブック(xlsx)では動作しません。

事前準備として、新規Excelブックを作成、または、既存Excelブックを開き、
ファイル > 名前を付けて保存 > Excel マクロ有効ブック (*.xlsm) を選択して保存してください。

マクロ(VBA)を作成する

Excelブック(xlsm形式)を開いている状態で、キーボードのalt + f11を押すと、Microsoft Visual Basic for Applicationsが起動します。

下図の手順で、標準モジュールを挿入します。

「VBAProject (ファイル名)」を右クリックし、挿入 > 標準モジュール

続いて、コード(後述)を貼り付けて保存します。

後述するコードを①の部分に貼り付け、保存する
Sub InsertMail()
    ' 現在Outlookで選択しているメールをExcelの選択しているセルに「オブジェクトの挿入」で挿入

    Dim objMail As Outlook.MailItem
    Dim fileName As String
    Dim filePath As String
    Dim folderPath As String
    Dim outlookApp As Outlook.Application

    ' Outlookで選択しているメールを取得
    On Error Resume Next
    Set outlookApp = GetObject(, "Outlook.Application")
    Set objMail = outlookApp.ActiveExplorer.Selection(1)
    On Error GoTo 0

    If objMail Is Nothing Then
        MsgBox "Outlookでメールが選択されていません。", vbExclamation
        Exit Sub
    End If


    ' メールを保存
    folderPath = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\InsertMail"
    mailTitle = objMail.Subject
    fileName = Replace(Replace(mailTitle, ":", ":"), "\", "¥") & ".msg"
    If Dir(folderPath, vbDirectory) = "" Then
        MkDir folderPath
    End If
    filePath = folderPath & "\" & fileName
    objMail.SaveAs (filePath)


    ' Outlookメールをオブジェクトとして挿入
    ThisWorkbook.ActiveSheet.OLEObjects.Add( _
        fileName:=filePath, _
        Link:=False, _
        DisplayAsIcon:=True _
    ).Select

End Sub

続いて、下図の手順でMicrosoft Outlook XX.X Object Libraryの参照設定を行います。

ツール > 参照設定 > Microsoft Outlook XX.X Object Libraryを選択 > OK

ここまでできたら、右上の×でエディタを閉じます。

クイックアクセスツールバーに追加

Excelのメニューのファイル > オプションで、「Excelのオプション」を開き、
下図の手順で、実行ボタンを、クイックアクセスツールバーに追加します。

①~⑥の順に正しく設定してください。
クイックアクセスツールバーに実行ボタンが追加された。

マクロを実行する

これで準備は完了です。早速実行してみます。

Outlookを起動し、Excelに挿入したいメールを選択した状態で
Excelのクイックアクセスツールバー上の実行ボタンを押してください。

Outlook上でメールを選択する
挿入したい位置のセルを選択し、ボタンを押す
メールが挿入された。ダブルクリックすると、Outlookでメールを読むことができます。

コメント