【マクロ・VBAダウンロード】エクセルでメールを一斉送信するマクロ

アイキャッチ画像 エクセル

【マクロ・VBA】エクセルでメールを一斉送信するマクロを組みました

ソースコードとファイルを貼るのでよかったら使ってみてください

使用方法の動画です↓

こんな人におすすめ

  • 毎月同じ文章で複数メールを送っている方
  • 顧客リストをEXCELで管理している方

文章をコピペして、宛先・会社名を変えてると時間が掛かりますよね

また送信ミスや会社名を間違って送信するときもあります

そこで、件名・本文は固定にして会社名だけは変更し、顧客リストのメールアドレスに一括送信する

VBA・マクロを組んでみました

Sheet1には件名と本文、Sheet2には顧客名と顧客のアドレスが入っています

ボタンを押すとoutlookを使用しメールを送る仕組みになっています

マクロファイル

ファイル→テンプレート文一括送信.xlsm

※インターネットからのマクロは、Office では既定でブロックされますので許可する必要があります

詳細はマイクロソフトが公開してますので参考にしてください →詳細ページ

ファイルダウンロードがちょっと怖いという方はコードをコピペして使ってください

ファイルを開くと黄色タスクバーが出てくるので、「編集を有効にする」を押すと

マクロの許可の画像

今度は赤色のタスクバーがでできます「詳細を表示」を押してもうまく動かせないので
次の操作をしてください

マクロの許可の画像

使いたいファイルの「プロパティ」を開きます

マクロの許可の画像

赤枠の中の「許可する(K)」にチェックを入れて「適用」をクリックしてください

マクロの許可の画像

すると赤枠がなくなるので使えるようになります

マクロの許可の画像

使う前のEXCELの設定について

今回EXCELでこのソースコードを使う場合、「ライブラリ」を使う必要があります

「ライブラリ」ってなんぞやかというと、簡単にEXCEL以外のアプリケーションを使えるようにする

便利ツールみたいなものです

今回使用したのはMicrosoft Outlook Object Libraryです

このライブラリの設定について紹介します

マクロ形式(.xlsm)のEXCELファイルを開き、オルト11!(Alt+F11)でVBEを開きます

タブの中に「ツール」があるので、その中の「参照設定(R)」をクリックしてください

VBEの画面画像

すると下の画面が表示されますので

Microsoft Outlook 〇〇 Object Libraryにチェックをいれて「OK」を押してください

VBEの画面画像

これでMicrosoft Outlook Object Libraryが使えるようになりました

マクロコード

※EXCELにマクロを入れる場合、EXCELファイルをマクロ形式にしてください

その後、Alt+F11でマクロの画面に移り変わるので、Alt+I+Mを押して

表示した画面にコピペしてください

下の記事にマクロの取り込み方法をまとめたのでよかったら参考にしてください

Sub mail()
'変数///////////////////////////////////////////////////////
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws_mail As Worksheet: Set ws_mail = wb.Sheets("mail形式") 'mail形式のSheet用変数
Dim ws_geust As Worksheet: Set ws_geust = wb.Sheets("顧客リスト") '顧客リストのSheet用変数

Dim outlookobj As Outlook.Application
Set outlookobj = CreateObject("Outlook.Application") 'outlookを起動

Dim mymail As Outlook.MailItem’新規メール作成


Dim mailbody As String '本文用変数
Dim companyName As String '会社名用変数


Dim i As Long 'カウンター変数
Dim last_r As Long '最終行用の変数

’メール一括送信//////////////////////////////////////////////////
last_r = ws_geust.Cells(Rows.Count, 1).End(xlUp).Row '顧客リストの最終行を取得

For i = 2 To last_r '1行目を除く最終行までの会社をループさせる
    
    Set mymail = outlookobj.CreateItem(olMailItem) 'メールを作成
        
        
        With mymail
        
        .BodyFormat = 3 '添付資料をつける場合「3」で設定
        
        .To = ws_geust.Cells(i, 3) '宛先
        
        .Subject = ws_mail.Range("B1").Value '件名
        
        mailbody = ws_mail.Range("B2").Value '本文
        
        companyName = ws_geust.Cells(i, 2) '会社名
        
        mailbody = Replace(mailbody, "$会社名", companyName) '送り先の会社名に変更
        
        .Body = mailbody '作成中のメールにBodyを代入
        
        .Send
        
        End With

Next i

MsgBox "完了" '作業完了の知らせ

End Sub

コメント

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