【コピペでOK】エクセルからOutlookメールを自動作成!コピペで使えるVBA(マクロ)コード!

コピペで使えるコード集

BCCでの一斉送信ではそれぞれの宛先の対応ができない…
毎回同じようなメールを手入力するのが面倒…

メールを一斉送信する時、本文変更ができずに困った経験、あるのではないでしょうか。そんな悩みを解決するのが、VBAを使ったメール自動作成です。

このVBAコードをコピペするだけで、Outlookのメールを簡単に作成できます。ほかのVBAと連携させて、見積書取得システムなどを作ることも可能です。

このVBAは初心者にもピッタリの内容なので、スキルアップの意味でもおすすめです!

また「VBAは初めてでよく分からない…」という方でも、そのまま使えるエクセルファイルも用意しています。

※添付付きメールを作成する場合はコチラ

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

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

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

Sub SendEmail()
    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem
    Dim ws As Worksheet
    Dim lRow As Long
    Dim strto As String, strcc As String, strsub As String, strbody As String
    
    'Outlookのアプリケーションを起動
    Set olApp = New Outlook.Application
    'メール送信リストが記載されたシートを設定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    '最終行を取得
    lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
    
    '1行ずつデータを取得し、メールを送信
    For i = 2 To lRow
        '宛先
        strto = ws.Cells(i, 1).Value
        'CC
        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
        
        'メールを作成
        Set olMail = olApp.CreateItem(olMailItem)
        '送信先、CC、件名、本文を設定
        With olMail
            .To = strto
            .CC = strcc
            .Subject = strsub
            .Body = strbody
            .Display 'メールを表示
            '.Send '自動で送信する場合はコメントアウトを外す
        End With
        'オブジェクトを解放
        Set olMail = Nothing
    Next i
    
    'オブジェクトを解放
    Set olApp = Nothing
End Sub

※当サイトで紹介している他のコピペコードは、コチラにまとめています!

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

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

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

エクセルファイルはNoteにて販売しています。すぐに使いたい方はこちらを活用してください。

【Excelツール】Outlook一括送信|すぐに使える完成版ダウンロード|犬井 | 効率化大全
同じようなメールを、宛名と添付を変えて1件ずつ送るのが面倒… 挨拶メール、BCCじゃなくて一人ひとりに宛てて送りたい 同じような文面のメールを、宛名だけ変えて何十件も送る作業に時間を取られていないでしょうか? この記事は、そんな「メール送信...

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

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

エクセルに宛先~署名を記載すると、内容通りにメールが作成されます。

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

実行後の画面。メールを確認して手作業で送信ボタンを押す必要があるが、自動送信にすることも可能。

業務効率化におすすめ書籍『9選』はコチラから!

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

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

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

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

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

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

VBAの埋込/ボタンの挿入

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

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

【重要】参照設定の追加

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

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

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

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

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

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

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

リストにメール内容を入れたサンプル。会社名・担当者・署名の間に改行が必要な場合は、「Alt」+「Enter」で改行。

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

エラーの対処

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

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

さいごに

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

今回紹介したようなVBAスキルは、一度身につければ一生使える武器となります。コピペも便利ですが、本で体系的に学ぶことで「自分でコードを書く力」を短期間で身につけられます。

以下の記事では、Kindle Unlimited(読み放題)無料で読めるおすすめのVBA書籍を厳選して紹介しています。生成AIを前提とした、今までとは全く違ったVBA学習法も紹介しているので、是非チェックしてみてください!

 VBA初心者におすすめの『5冊』はこちら!

※この記事を見た方は、こちらの記事もおすすめです!

コメント

  1. 上郡千紘 より:

    こんにちは。ブログ参考にさせていただき、初めてVBAに触れました。わかりやすいブログ、大変助かります。
    下記もしよろしければ一つお聞きしたいです。Outlookメール自動作成(添付ファイル付き)のマクロで、添付ファイルを複数添付したい場合、どのようにすれば良いか教えていただけると大変ありがたいです。

    • Inuiwan より:

      上郡千紘様
      コメントいただきましてありがとうございます!
      このブログをきっかけにVBAに触れていただき大変うれしく思います!
      さて、添付ファイルの複数添付の方法ですが以下の2点を参考にしていただければと思います。
      ①複数のファイルを一つのフォルダに入れzipファイルにする(vba変更不要)
       添付したいファイルを一つのフォルダに入れ、zipファイルに圧縮することで、実質的に2個以上の添付が可能となります。
       このやり方であれば、vbaの変更が不要のため、すぐに実行可能です。
      ②vbaを修正する
       添付付きメールvbaのコードから以下の部分を変更すると、複数ファイルを添付することができます。
      ・コード記事:https://inuiwan.com/archives/1159
      ・修正箇所:
      ‘ 添付ファイルパス(8列目に記載されている場合)
      strAttachment = ws.Cells(i, 8).Value
      If strAttachment <> “” And Dir(strAttachment) <> “” Then
      .Attachments.Add strAttachment
      End If
      ・変更内容:
      ‘ 添付ファイル(8列目以降に記載されている複数パスをチェック)
      Dim j As Long
      For j = 8 To ws.Cells(i, Columns.Count).End(xlToLeft).Column
      strAttachment = ws.Cells(i, j).Value
      If strAttachment <> “” And Dir(strAttachment) <> “” Then
      .Attachments.Add strAttachment
      End If
      Next j

      差し替えればできますが少しややこしいので、以下記事にまとめました!
      ぜひこちらもご確認いただければと思います!
      https://inuiwan.com/archives/1272

      これからも当ブログをよろしくお願いします。

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