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作成法も別の記事で紹介しています、そちらもぜひ参考にしてみてください!
コメント