こちらに「複数宛先や添付ファイル付きメール送信」のVBAサンプルをまとめました。
Outlookを操作して、複数の宛先(To/CC/BCC)や複数ファイルを添付して送信する実務向けコードです。
サンプル1:複数宛先にメール送信
Sub SendMail_MultiRecipients()
Dim outlookApp As Object, mailItem As Object
Set outlookApp = CreateObject("Outlook.Application")
Set mailItem = outlookApp.CreateItem(0)
With mailItem
.To = "user1@company.com; user2@company.com" ' 複数宛先はセミコロン区切り
.CC = "manager@company.com"
.BCC = "audit@company.com"
.Subject = "複数宛先テスト"
.Body = "このメールは複数宛先に送信されています。"
.Send
End With
End Sub
VB👉 To/CC/BCCに複数アドレスを指定可能。セミコロンで区切ります。
サンプル2:添付ファイルを1つ追加
Sub SendMail_WithAttachment()
Dim outlookApp As Object, mailItem As Object
Dim attachPath As String
attachPath = "C:\Test\report.xlsx"
Set outlookApp = CreateObject("Outlook.Application")
Set mailItem = outlookApp.CreateItem(0)
With mailItem
.To = "user@company.com"
.Subject = "添付ファイル送信テスト"
.Body = "レポートを添付します。"
.Attachments.Add attachPath
.Send
End With
End Sub
VB👉 ファイルパスを指定して添付できます。
サンプル3:複数ファイルを添付
Sub SendMail_MultiAttachments()
Dim outlookApp As Object, mailItem As Object
Dim files As Variant, f As Variant
files = Array("C:\Test\report.xlsx", "C:\Test\summary.pdf")
Set outlookApp = CreateObject("Outlook.Application")
Set mailItem = outlookApp.CreateItem(0)
With mailItem
.To = "user@company.com"
.Subject = "複数添付テスト"
.Body = "複数のファイルを添付しました。"
For Each f In files
.Attachments.Add f
Next f
.Send
End With
End Sub
VB👉 配列を使って複数ファイルをループ添付。
サンプル4:シート上の宛先・添付ファイルを参照
Sub SendMail_FromSheet()
Dim outlookApp As Object, mailItem As Object
Dim ws As Worksheet, lastRow As Long, i As Long
Dim toList As String, attachPath As String
Set ws = Sheets("MailData")
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
' A列:宛先、B列:添付ファイルパス
For i = 2 To lastRow
toList = ws.Cells(i, 1).Value
attachPath = ws.Cells(i, 2).Value
Set outlookApp = CreateObject("Outlook.Application")
Set mailItem = outlookApp.CreateItem(0)
With mailItem
.To = toList
.Subject = "シート参照メール"
.Body = "シートに記載された宛先・添付を利用しています。"
If attachPath <> "" Then .Attachments.Add attachPath
.Send
End With
Next i
End Sub
VB👉 Excelシートに宛先や添付ファイルを管理して自動送信。
✅ まとめ
- 複数宛先 → セミコロン区切りで指定
- 添付ファイル →
.Attachments.Addを利用 - 複数添付 → 配列やシートのリストをループ処理
- 実務応用 → シート管理で大量メールを自動化
💡 この仕組みを応用すれば、「条件分岐+セル操作+メール送信」と組み合わせて、在庫不足や売上超過を検知したら自動で複数担当者にレポートを添付して送信する、といった業務フローを完全自動化できます。
