【マクロ・VBA】エクセルでメールを一斉送信するマクロを組みました
ソースコードとファイルを貼るのでよかったら使ってみてください
使用方法の動画です↓
こんな人におすすめ
- 毎月同じ文章で複数メールを送っている方
- 顧客リストをEXCELで管理している方
文章をコピペして、宛先・会社名を変えてると時間が掛かりますよね
また送信ミスや会社名を間違って送信するときもあります
そこで、件名・本文は固定にして会社名だけは変更し、顧客リストのメールアドレスに一括送信する
VBA・マクロを組んでみました
Sheet1には件名と本文、Sheet2には顧客名と顧客のアドレスが入っています
ボタンを押すとoutlookを使用しメールを送る仕組みになっています
マクロファイル
ファイル→テンプレート文一括送信.xlsm
※インターネットからのマクロは、Office では既定でブロックされますので許可する必要があります
詳細はマイクロソフトが公開してますので参考にしてください →詳細ページ
ファイルダウンロードがちょっと怖いという方はコードをコピペして使ってください
ファイルを開くと黄色タスクバーが出てくるので、「編集を有効にする」を押すと
今度は赤色のタスクバーがでできます「詳細を表示」を押してもうまく動かせないので
次の操作をしてください
使いたいファイルの「プロパティ」を開きます
赤枠の中の「許可する(K)」にチェックを入れて「適用」をクリックしてください
すると赤枠がなくなるので使えるようになります
使う前のEXCELの設定について
今回EXCELでこのソースコードを使う場合、「ライブラリ」を使う必要があります
「ライブラリ」ってなんぞやかというと、簡単にEXCEL以外のアプリケーションを使えるようにする
便利ツールみたいなものです
今回使用したのはMicrosoft Outlook Object Libraryです
このライブラリの設定について紹介します
マクロ形式(.xlsm)のEXCELファイルを開き、オルト11!(Alt+F11)でVBEを開きます
タブの中に「ツール」があるので、その中の「参照設定(R)」をクリックしてください
すると下の画面が表示されますので
Microsoft Outlook 〇〇 Object Libraryにチェックをいれて「OK」を押してください
これで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
コメント