【コピペでOK】エクセルから添付付きのOutlookメールを自動作成!VBA(マクロ)コード・ダウンロードファイル付き!

VBAの組み方・VBA初心者向け

Outlookのメールで添付ファイルをいちいち貼り付けるのがめんどくさい…
添付ファイル付きメールを送る作業を自動化したい

Outlookでメールを送るとき、地味に面倒なのが添付ファイルです。ファイルを張り付けるだけですが、量が多いと結構手間になる作業です。そんな悩みを解決するのが、VBAを使ったメール自動作成です。

このVBAコードをコピペするだけで、Outlookの添付付きメールを簡単に作成できます。さらに、別で紹介したフォルダのファイル取得VBAを使えば、メールごとに別の添付をつける作業も効率化することができます!

「VBAは初めてでよく分からない…」という方でも、そのまま使えるエクセルファイルも用意しています。まずはダウンロードして試してみてください。

このブログでは、効率化に関する様々な情報を発信しています。AIの情報等も配信していますので、そちらもぜひ参考にしてみてください!

【結論】コピペで使える添付付きメール作成VBA

以下のコードをコピペするだけで、Outlookの添付付きメールを自動作成できます。

実行の際、あらかじめ宛先/CCなどの項目の作成が必要です。詳しくはこの後紹介します。

Sub SendEmail_Attachment()
    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem
    Dim ws As Worksheet
    Dim lRow As Long, i As Long
    Dim strTo As String, strCC As String, strSub As String, strBody As String
    Dim strAttachment As String
    
    ' Outlookのインスタンス取得(すでに起動していればそれを使う)
    On Error Resume Next
    Set olApp = GetObject(, "Outlook.Application")
    If olApp Is Nothing Then
        Set olApp = New Outlook.Application
    End If
    On Error GoTo 0
    
    ' メール送信リストが記載されたシートを設定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 最終行を取得
    lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
    
    ' 1行ずつデータを取得し、メールを送信
    For i = 2 To lRow
        ' 宛先・CC・件名・本文を取得
        strTo = ws.Cells(i, 1).Value
        strCC = ws.Cells(i, 2).Value
        strSub = ws.Cells(i, 3).Value
        strBody = ws.Cells(i, 4).Value & vbCrLf _
                  & ws.Cells(i, 5).Value & vbCrLf _
                  & ws.Cells(i, 6).Value & vbCrLf _
                  & ws.Cells(i, 7).Value

        ' 添付ファイルパス(8列目に記載されている場合)
        strAttachment = ws.Cells(i, 8).Value
        
        ' メール作成
        Set olMail = olApp.CreateItem(olMailItem)
        With olMail
            .To = strTo
            .CC = strCC
            .Subject = strSub
            .Body = strBody
            
            ' 添付ファイルがある場合に追加
            If strAttachment <> "" And Dir(strAttachment) <> "" Then
                .Attachments.Add strAttachment
            End If
            
            .Display ' メールを表示
            '.Send ' 自動送信する場合はコメントアウトを外す
        End With
        
        ' メモリ解放
        Set olMail = Nothing
    Next i

Cleanup:
    ' Outlookアプリケーション解放
    Set olApp = Nothing
    Exit Sub

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

【番外】そのまま使えるエクセルファイル

VBAが分からないという方向けに、VBAが入ったエクセルファイルを用意しました。ここに内容を書き込むだけで、簡単にメールが自動作成できます。

PCによっては「参照設定の追加」が必要となることがあります。エラーが出る場合は、この記事で紹介している「参照設定の追加」を試してください。

※ウイルスではもちろんありませんが、マクロ付きのため、自己責任でお願いします。

メール自動作成VBAの動作と使い方

実行すると、リストをもとにOutlookのメールが自動作成されます。

デフォルトでは、自動送信をオフにしていますが、送信まで自動化することも可能です。

メール自動送信VBAの使い方

ここからはVBAのコピペ方法を含めて、使い方を紹介します。

エクセルの準備(項目設定・to/cc/本文/添付の入力)

まず、エクセルのシートに以下のタイトルを入力してください

・A列:宛先(To)
・B列:CC
・C列:件名
・D列:会社名
・E列:担当者
・F列:本文
・G列:署名

・H列:添付

直接この名前をVBAで認識はしていません。ただ、リスト入力の間違い防止になるため、この内容で入力してください。

VBAの埋込/ボタンの挿入

エクセルの「開発」タブから「Visual Basic」エディタを開きます。そしてVBAコードを「標準モジュール」に貼り付けます。

「開発」を出す設定コードの書き方は、別の記事で詳しく解説しています。こちらの記事もぜひ参考にしてみてください。

【重要】参照設定の追加

このVBAを使用するためには、参照設定の追加が必要になります。エクセル上部の[開発]→[Visual Basic]と進み、VBAの編集画面を表示させます。(開発タブがない方はコチラ)

VBAの編集画面から[ツール]→[参照設定]と進みます。

参照設定の下の方に、[Microsoft Outlook 16.0 Object Library]があります。チェックを入れOKボタンを押します。

メール内容の書き込み・VBA実行

あとはメール内容を書き、 VBAを実行すればメールが自動的に作成されます。

会社名・担当者は、本文の上側に入るように設定しています。また署名本文の下に入るように設定しています。

なお改行は一つしか入れていません。必要があれば、セル内で改行を足すか、コードを編集するようにしてください。

H列の添付ファイルは、フルパスで入力してください。

また、送信ボタンを設置すると、マクロ画面を開く必要がなくなりとても便利です。ボタンのつけ方は、こちらの記事を参考にしてください。

※フォルダ内のファイル取得VBAとの連携

以前紹介した、フォルダ内のファイル取得VBAと連携させることで、さらに効率的に自動作成できるようになります。

例えば、顧客名がファイル名になっている場合、VBAで作ったリストをコピペするだけでメールができます。

ファイル取得VBAはこちらの記事で紹介しているので、そちらもぜひ参考にしてみてください。

エラーの対処

このVBAを実行すると、以下のようなエラーが出ることがあります。

このエラーは、参照設定で解消できることがほとんどです。参照設定の方法は、この記事の[【重要】照設定の追加]の項を参考にしてください。

さいごに

今回は、Outlookのメール自動作成VBAを紹介しました。とても効率がUPするVBAなので、ぜひ活用してみてください。

またこのコードはChatGPTで作ったVBAを元にしています。ChatGPTを使ったVBA作成法も別の記事で紹介しています、そちらもぜひ参考にしてみてください!

コメント

タイトルとURLをコピーしました