非プログラマーでもできる!業務の自動化

OutlookメールExcelのデータからメールを作成|VBA自動化

当ページのリンクの一部に広告が含まれています。

課題・悩み「メールの作成を自動化したい」

解決策「Excelのデータからメールを作成するOutlook VBAマクロ」を解説

決まったメールは毎回1から作成するのは面倒だし、時間の無駄。

そこでOutlookマクロで自動化しました。

【ExcelのデータからOutlookメールを作成する】VBAマクロです。

このVBAマクロを使えば、定期的な報告メールの作成や、特定のファイルを頻繁に添付する必要がある作業を大幅に効率化できます。

この記事では

【Excelのデータからメールを作成するOutlook VBAマクロ】を図解で解説しています。

VBAマクロファイルを配布中。

以下のボタンよりダウンロードしてください。

目次

Outlookメール作成Excelファイルの使い方

Excelに内容を入力する

ExcelファイルのSheet1の以下のセルに、作成したいメールの条件や内容を入力してください。

メール本文のフォント

Excelのデータからメールを作成するOutlook VBAマクロメール本文のフォントの画像

メール本文に使用したいフォントは、Sheet1のC2に入力してください。

メール本文のフォントサイズ

Excelのデータからメールを作成するOutlook VBAマクロメール本文のフォントサイズの画像

メール本文のフォントサイズは、Sheet1のC3に入力してください。

メールのToの宛先

Excelのデータからメールを作成するOutlook VBAマクロメールのToの宛先の画像

メールのToの宛先は、Sheet1のC4に入力してください。

メールのCcの宛先

Excelのデータからメールを作成するOutlook VBAマクロメールのCcの宛先の画像

メールのCcの宛先は、Sheet1のC5、D5…に入力してください。

メールのタイトル

Excelのデータからメールを作成するOutlook VBAマクロメールのタイトルの画像

メールのタイトルは、Sheet1のC6に入力してください。

メールの本文

Excelのデータからメールを作成するOutlook VBAマクロメールの本文の画像

メールの本文は、Sheet1のC7に入力してください。

添付ファイルの保存フォルダ

Excelのデータからメールを作成するOutlook VBAマクロ添付ファイルの保存フォルダの画像

添付ファイルはそのファイルが保存されているフォルダのパスを、Sheet1のC8に入力してください。

入力したフォルダ内のすべてのファイルを添付します。

【メール作成】のボタンを押す

Excelのデータからメールを作成するOutlook VBAマクロ【メール作成】のボタンを押すの画像

Excelファイルの【メール作成】のボタンを押すと、入力された内容でメールが作成されます。

ExcelのデータからOutlookのメールを作成するVBAマクロのコード

ExcelとOutlookを連携させてメールを自動生成するVBAマクロの作成方法についてご紹介します。

これは、Excelシートに保存されたデータを基にして、Outlookでメールを作成し、必要なファイルを添付するプログラムです。

これは特に、定期的に報告メールを送る必要がある業務などで役立ちます。

Option Explicit

' メール作成と送信準備のメイン処理
Sub CreateAndPrepareEmail()
    On Error GoTo ErrorHandler

    ' シート名の指定
    Dim sheetName As String
    sheetName = "Sheet1"

    ' OutlookとMailItemオブジェクトの初期化
    Dim OL As Object
    Set OL = CreateOutlookObject()

    Dim MI As Object
    Set MI = CreateMailItem(OL)

    ' ワークシートの取得
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(sheetName)

    ' 基本情報の設定
    SetBasicEmailInfo MI, ws

    ' ファイルの添付
    AttachFilesFromFolder MI, ws.Range("C8").Value
    AddSelectedAttachment MI

    ' メールの表示
    MI.Display

    ' オブジェクトの解放
CleanExit:
    Set OL = Nothing
    Set MI = Nothing
    Set ws = Nothing
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description, vbCritical
    Resume CleanExit
End Sub

' Outlookオブジェクトの作成
Function CreateOutlookObject() As Object
    On Error Resume Next
    Set CreateOutlookObject = CreateObject("Outlook.Application")
    On Error GoTo 0
End Function

' MailItemオブジェクトの作成
Function CreateMailItem(OL As Object) As Object
    If Not OL Is Nothing Then
        Set CreateMailItem = OL.CreateItem(0) ' olMailItem
    End If
End Function

' メールの基本情報を設定
Sub SetBasicEmailInfo(ByRef MI As Object, ByRef ws As Worksheet)
    If MI Is Nothing Or ws Is Nothing Then Exit Sub

    ' 宛先、CC、件名、本文の設定
    MI.To = ws.Range("C4").Value
    MI.Cc = ws.Range("C5").Value
    MI.Subject = ws.Range("C6").Value

    ' メール本文のHTML形式での設定
    Dim emailBody As String
    emailBody = ws.Range("C7").Value
    emailBody = Replace(emailBody, vbLf, "")

    ' フォントの設定
    Dim fontName As String
    Dim fontSize As String
    fontName = ws.Range("C2").Value
    fontSize = ws.Range("C3").Value
    MI.HTMLBody = "" & emailBody & ""
End Sub

' 指定されたフォルダ内のファイルをメールに添付
Sub AttachFilesFromFolder(ByRef MI As Object, folderPath As String)
    If MI Is Nothing Or folderPath = "" Then Exit Sub

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    If Not fso.FolderExists(folderPath) Then Exit Sub

    Dim folder As Object
    Set folder = fso.GetFolder(folderPath)

    Dim file As Object
    For Each file In folder.Files
        MI.Attachments.Add file.Path
    Next file

    Set fso = Nothing
    Set folder = Nothing
End Sub

' ファイル選択ダイアログを表示し、選択されたファイルをメールに添付
Sub AddSelectedAttachment(ByRef MI As Object)
    If MI Is Nothing Then Exit Sub

    Dim selectedFilePath As String
    selectedFilePath = SelectAttachmentFile()

    If selectedFilePath <> "" Then
        MI.Attachments.Add selectedFilePath
    End If
End Sub

' ファイル選択ダイアログを表示し、選択されたファイルのパスを返す
Function SelectAttachmentFile() As String
    Dim fd As Object
    Set fd = Application.FileDialog(3) ' msoFileDialogFilePicker

    With fd
        .AllowMultiSelect = False
        .Title = "添付ファイルを選択してください"
        .InitialFileName = ThisWorkbook.Path & "\"
        If .Show = -1 Then
            SelectAttachmentFile = .SelectedItems(1)
        Else
            SelectAttachmentFile = ""
        End If
    End With
    Set fd = Nothing
End Function

コードの概要

Outlookオブジェクトの作成

最初に、Outlookアプリケーションオブジェクトを生成します。

Function CreateOutlookObject() As Object
    Set CreateOutlookObject = CreateObject("Outlook.Application")
End Function

MailItemオブジェクトの作成

Outlookで新しいメールアイテム(メール)を生成します。

Function CreateMailItem(OL As Object) As Object
    Set CreateMailItem = OL.CreateItem(0) ' olMailItem
End Function

Excelシートからのデータ読み込み

指定したExcelシートからメールの宛先、件名、本文などの情報を取得します。

Sub SetBasicEmailInfo(ByRef MI As Object, ByRef ws As Worksheet)
    MI.To = ws.Range("C4").Value
    MI.Cc = ws.Range("C5").Value
    MI.Subject = ws.Range("C6").Value
    ' 以下、本文とフォント設定のコード
End Sub

フォルダ内のファイル添付

指定されたフォルダ内の全ファイルをメールに添付します。

Sub AttachFilesFromFolder(ByRef MI As Object, folderPath As String)
    ' フォルダ内のファイルをメールに添付する処理
End Sub

手動でのファイル添付

ユーザーがファイル選択ダイアログを通じてファイルを選択し、メールに添付します。

Sub AddSelectedAttachment(ByRef MI As Object)
    ' ユーザーが選択したファイルをメールに添付する処理
End Sub

メールの表示

作成されたメールをOutlook上で表示します。

MI.Display

カスタイマイズ箇所

シート名の指定

コードは特定のExcelシートに依存しています。

使用するシート名に応じてこの値を変更してください。

sheetName = "YourSheetName"

メールの宛先、CC、件名、本文のセル参照

メールの各情報はExcelシートの特定のセルから取得されます。

これらのセルの参照を実際のデータが含まれているセルに変更する必要があります。

MI.To = ws.Range("YourCellForTo").ValueMI.Cc = ws.Range("YourCellForCc").ValueMI.Subject = ws.Range("YourCellForSubject").ValueemailBody = ws.Range("YourCellForBody").Value

フォント名とフォントサイズのセル参照

メール本文のHTMLフォーマットに使用するフォント名とサイズを設定するセル参照を適切なものに変更します。

fontName = ws.Range("YourCellForFontName").ValuefontSize = ws.Range("YourCellForFontSize").Value

添付ファイルのフォルダパスのセル参照

添付ファイルとして指定されたフォルダのパスが含まれるセル参照を適切なものに変更します。

folderPath = ws.Range("YourCellForFolderPath").Value

ファイル選択ダイアログの初期パス設定

ファイル選択ダイアログが開かれたときの初期ディレクトリパスを変更します。

.InitialFileName = "YourInitialPath\"

マクロ実行時の注意点

データ量と処理時間

Excelシートにデータが多い場合や、フォルダ内に多くのファイルがある場合、処理に時間がかかる可能性があります。

操作の取り消し

VBAマクロで実行した操作は通常、元に戻せません。

重要なデータを扱う場合は、事前にバックアップを取ることをお勧めします。

マクロ実行に必要な環境設定

このコードはMicrosoft ExcelとOutlookがインストールされている環境でのみ動作します。

また、Excelのセキュリティ設定でマクロの実行が許可されている必要があります。

エラーハンドリングが含まれていますが、特定のエラーについてはより詳細な対処が必要になる場合があります。

参照設定

【ツール】→【参照設定】→【Microsoft Outlook 16.0 Object Library】にチェックを入れます。

まとめ:VBAマクロでメール作成のミス削減

コピペでOK!Outlook VBAのコード一覧

Outlook VBAの基本

Outlookの操作

Outlookメール作成

Outlook メール本文作成

Outlook メール管理

Outlook 予定表

コピペでOK!Outlook VBAのコード一覧

Outlook VBAの基本

Outlookの操作

Outlookメール作成

Outlook メール本文作成

Outlook メール管理

Outlook 予定表

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次