Excel VBA | VBA 分岐処理関数一覧

Excel VBA VBA
スポンサーリンク

こちらに「複数宛先や添付ファイル付きメール送信」の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 を利用
  • 複数添付 → 配列やシートのリストをループ処理
  • 実務応用 → シート管理で大量メールを自動化

💡 この仕組みを応用すれば、「条件分岐+セル操作+メール送信」と組み合わせて、在庫不足や売上超過を検知したら自動で複数担当者にレポートを添付して送信する、といった業務フローを完全自動化できます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました