【ExcelVBA】メールを送る(OutLook)
OutLookでメールを送信するマクロの事例集です
outlookでメールを送信する
※ツール > 参照設定 >「Microsoft Outlook ??.? Object Library」を有効化する
Dim oApp As New Outlook.Application Dim mail As Outlook.MailItem Set mail = oApp.CreateItem(olMailItem) 'メールを作成 mail.To = "sampleTo@mail.co.jp" '宛先 mail.CC = "sampleCC@mail.co.jp" 'CCを指定 mail.BCC = "sampleBCC@mail.co.jp" 'BCCを指定 mail.Subject = "こんにちは" '件名を指定 mail.HTMLBody = "お元気ですか" '本文の指定 mail.attachments.Add "C:\data\Wb1.xlsx" 'ファイルを添付 mail.Display '作成したメールを表示 mail.Send '作成したメールを送信
複数のメールを送る
For文を使い、Excelシート1行1通ずつでメールを作成し送信する
Dim oApp As New Outlook.Application Dim mail As Outlook.MailItem Set mail = oApp.CreateItem(olMailItem) 'メールを作成 Dim maxrow as Long maxrow = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To maxrow mail.To = Cells(i, 1).Value mail.CC = Cells(i, 2).Value mail.BCC = Cells(i, 3).Value mail.Subject = Cells(i, 4).Value mail.HTMLBody = Cells(i, 5).Value mail.attachments.Add Cells(i, 6).Value mail.Display mail.Send Next
※本文の中身は、HTML形式のためbr,pタグなどが使用可能
セルの値で1つのメールを複数宛先にまとめて送る
Dim oApp As New Outlook.Application Dim mail As Outlook.MailItem '宛先を作る Dim MargeTo As String Dim singleTo As Range 結合文字 = "" For Each singleTo In Worksheets("Sh1").Range("A2:A15") MargeTo = MargeTo & singleTo.Text & ";" Next singleTo Set mail = oApp.CreateItem(olMailItem) mail.To = MargeTo mail.Subject = "こんにちは" mail.HTMLBody = "お元気ですか" mail.Display mail.Send
1つのメールに複数のファイルを付けて送る
Dim oApp As New Outlook.Application Dim mail As Outlook.MailItem Set mail = oApp.CreateItem(olMailItem) mail.To = "sampleTo@mail.co.jp" mail.Subject = "こんにちは" mail.HTMLBody = "お元気ですか" Dim Filekey As String Dim FileName As String Filekey = "C:\data\Wb*.xlsx" FileName = Dir(Filekey) While FileName <> "" mail.attachments.Add FileName FileName = Dir Wend mail.Display mail.Send