VBAを使ってExcelのメールリストから自動でメール作成

目次

完成イメージ

Excelで作成したメールリストを使って、自動でメールを作成したいということが事務作業をしていると多くあります。メールリストから一つ一つ選択してコピーすることは手間が多いため、ワンクリックで複数の希望の宛先へメールを作成する方法を紹介します。

準備

3行目からB列に送信(宛先、cc、bcc)、C列に名前、D列にアドレスが入ったエクセルを用意しておく

VBAコード

Sub リストから複数へメール()
'outlookを立ち上げる
Set myOutlook = CreateObject("Outlook.Application")  '①
Set myNs = myOutlook.GetNamespace("MAPI")  '②
Set myMail = myOutlook.CreateItem(0)  '③
myMail.Display
'配列の箱を用意する。ここでは1000個用意。
Dim arr1(1000) As String
Dim arr2(1000) As String
Dim arr3(1000) As String
'最終行を取得。これにより途中空白でも続けられる。
Dim last As Long
last = Cells(Rows.Count, "B").End(xlUp).Row  '④
Debug.Print last
Dim i As Long
For i = 3 To last
  Select Case Cells(i, 2).Value  'select caseをつかうと複数条件を指定できる。
   Case "宛先"
   arr1(i) = Cells(i, 4).Value & ";"  '⑤
   Case "cc"
   arr2(i) = Cells(i, 4).Value & ";"
   Case "bcc"
   arr3(i) = Cells(i, 4).Value & ";"
  End Select
Next
'配列の箱に入ったアドレスをJoinでつなげてoutlookに放り込む。
myMail.To = Join(arr1)  '⑥
myMail.CC = Join(arr2)
myMail.BCC = Join(arr3)
End Sub

解説

  • outlookメールを立ち上げる
  • データを一時的に格納・記憶(配列を使用)。Dim 配列名(添字の上限値) As データ型名
  • 最終行を取得する。
  • 最後にアドレスをすべて合体させて、outlookメールの宛先、cc、bccに放り込む(Join関数)

Set myOutlook = CreateObject(“Outlook.Application”)  ’①

outlookを表すアプリの参照をmyOutlookに代入

Set myNs = myOutlook.GetNamespace(“MAPI”)  ’②

outlookの「受信トレイ」や「送信済みアイテム」等の既定フォルダを操作するのに必要

Set myMail = myOutlook.CreateItem(0)  ’③

outlookのアイテム(メールや予定、メモなど)を作成する場合、CreateItemメソッドを使用。

last = Cells(Rows.Count, “B”).End(xlUp).Row  ’④

最終行を取得する

arr1(i) = Cells(i, 4).Value & “;”  ’⑤

arr1という配列の箱に宛先4列目の文字と;を入れる。複数のメールアドレスを続ける場合、; ←セミコロンでつなげるルールがある。

myMail.To = Join(arr1)  ’⑥

Join(arr1)とするとarr1の箱に入っているアドレスをすべて合体できる。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次