目次
完成イメージ
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の箱に入っているアドレスをすべて合体できる。
コメント