Categories: VBA基礎

EXCEL VBA メール作成・送信 Outlookで自動メール作成及びメール送信・自動化・一括送信・複数宛先 (Outlook)

 

 

EXCEL VBA メール作成・送信 Outlookで自動メール作成及びメール送信・自動化・一括送信・複数宛先 (Outlook)

 

 

●はじめに

今回説明するのは、EXCEL VBAからOutlookアプリケーションを利用してメールの作成から自動でメールを送信(プレビュー表示)するまでの方法を説明いたします。日常業務でメールを多く利用すると思いますが、一つ一つメールを作成してメール送信を行うより、メールの送信用リストを作成して、連続的にメール送信ができると日常業務でも、とても便利だと思います。それでは、サンプルプログラムを交えて順番に説明いたします。

 

下記のプログラムを実施する場合は、以下の条件が必須事項となります。

①プログラムを実行するパソコンにOutlookがインストールされている条件となります。
②Outlookにメールアカウントが登録されている条件になります。
③Microsoft Outlook XX.X Object Libraryの参照設定を行う。
※参照方法については、下記を参照して下さい。

VBEでOutlook XX.X Object Libraryの参照設定を行う

・ VBEの画面を開いて、メニューから①「ツール」をクリックして②「参照設定」を選択します。
・ 参照設定の画面が開くので、③「Microsoft Outlook XX.X Object Library」にチェックを付けます。
・ 最後に④「OK」ボタンをクリックして参照設定を終了します。
※「Microsoft Outlook XX.X Object Library」については、XX.Xは、インストールされているOutlookのバージョンにより数値は、異なります。

 

●【MailItem オブジェクト (Outlook)、下記を参照して下さい】(Microsoft社 様)】
https://learn.microsoft.com/ja-jp/office/vba/api/outlook.mailitem

 

 

●書式の説明 (MailItemオブジェクトのプロパティ他)

● MailItemオブジェクトのプロパティを利用するには、下記の通りに設定を行います。

 

プロパティ・メゾット・コレクション内容・説明設定例
Toプロパティ送信の先メールアドレスを設定します。.To = "test@akira55.com”
CCプロパティCC送信先のメールアドレスを設定します。.CC = "test@akira55.com”
BCCプロパティCC送信先のメールアドレスを設定します。.BCC = "test@akira55.com”
Subjectプロパティメールの件名を指定します。.Subject = "メール連絡"
Importanceプロパティメールの重量度を設定します。
高い:olImportanceHigh
標準:olImportanceNormal
低い:olImportanceLow
.Importance =
olImportanceHigh
Attachmentsコレクションメール添付ファイルを追加します。.Attachments.Add "C:¥TEST.xlsx"
Bodyプロパティメールの本文を設定します。.Body = "●●様" & vbCr & "いつもお世話になっております。" & vbCr
BodyFormatプロパティメールのテキスト形式を設定します。
プレーンテキスト形式:olFormatPlain
HTML形式:olFormatHTML
リッチテキスト形式:olFormatRichText
.BodyFormat = olFormatPlain
Displayメソッドメールの内容を表示します。.Display
Sendメソッドメールを送信します。.Send

 

 

 

 

EXCEL VBA メール作成・送信 Outlookで自動メール作成(Outlook)

 

 

●プログラム説明 (サンプル①)

下記のサンプルプログラムは、EXCEL VBAよりOUTLOOKを操作してメールを作成して、作成したメール内容をプレビュー表示するサンプルプログラムです。【Send】で直接メール送信する事ができますが、【Display 】を使ってメール送信前にプレビュー表示させてからメール送信するように作成しております。(※メール内容等を確認するため)

【プログラムの流れ】
① Outlookオフジェクトの変数宣言
② メール送信用のオブジェクト作成
③ 宛先を設定します。(メールアドレスを登録)
④ CCを設定します。(メールアドレスを登録)
⑤ BCCを設定します。(メールアドレスを登録)
⑥ 件名を登録します。
⑦ メールのテキスト形式を設定します。(HTML)
⑧ 重要度の設定(高い)
⑨ 添付ファイルの設定(フルパスを設定)
⑩ メール本文を設定
⑪ メール内容を表示
⑫ メール送信用のオブジェクトの解放

 

'
'
'
Sub Outlook_Send00() 'OUTLOOKメール作成からメールプレビュー(送信)

  Dim OutlookAP As Outlook.Application
  Dim MailOutlook As Outlook.MailItem
  Set OutlookAP = CreateObject("Outlook.Application")
  Set MailOutlook = OutlookAP.CreateItem(olMailItem)

  With MailOutlook
        .To = "test1@akira55.com"  'Toのメールを設定
        .CC = "test2@akira55.com"  'CCのメールを設定
        .BCC = "test3@akira55.com" 'BCCのメールを設定
        .Subject = "メール送信"    '件名を設定
        .BodyFormat = olFormatHTML 'HTML形式
        .Importance = olImportanceHigh '重要度(高い)
        .Attachments.Add "C:\test1.xlsx"  '1個目の添付ファイル
       ' .Attachments.Add "C:\test2.pdt"  '2個目の添付ファイル
        .Body = "●●様" & vbCr & "いつもお世話になっております。" & vbCr  '本文を設定

        .Display 'メール内容を表示
        
        '.Send    'メール送信する場合は、「Send」を利用する。
  
  End With
  
  Set OutlookAP = Nothing
  Set MailOutlook = Nothing
  
End Sub
'

 

 

 

EXCEL VBA メール作成・送信 Outlookで自動メール作成、一覧表に登録されているメールアードレス宛へ順番にメールを送信(プレビュー表示)します。

 

 

●プログラム説明 (サンプル②)

下記のサンプルプログラムは、EXCELの表にメールアドレス帳(一覧表)を作成して、そのメールアドレスに登録されているメール宛に順番にメールを作成し送信(プレビュー表示)するサンプルプログラムです。直接メール送信するよりもプレビューを行い確認後、手動で送信ボタンを作成した方が、確認する事ができるので慎重にメールを送ることができます。なお、メール作成後、直ぐに送信したい場合は、【Display 】⇒【Send】に変えるだけで、メールを連続に送信する事ができます。

 

 


【プログラムの流れ】
① Outlookオフジェクトの変数宣言
② メール送信用のオブジェクト作成
③ A列の最終行を取得します。(No.列)
④ メールアイテムの作成
④ B列から宛先を設定します。(メールアドレスを登録)
⑤ C列からCCを設定します。(メールアドレスを登録)
⑥ D列からBCCを設定します。(メールアドレスを登録)
⑦ E列から件名を登録します。
⑧ F列から添付ファイルの設定(フルパスを設定)
⑨ メール本文を設定(G列から社名・H列から担当者・I列から本文)
⑩ メール内容を表示(プレビュー表示)
⑪ メール送信用のオブジェクトの解放
⑫ ④へ繰り返す。(A列で取得した最終行まで繰り返す。)

 

 

'
'
Sub Outlook_Send01() 'Outlookで自動メール作成(リスト作成)

    Dim I, lRow As Long
    Dim OutlookAP As Outlook.Application
    Dim MailOutlook As Outlook.MailItem
    Set OutlookAP = CreateObject("Outlook.Application")
    
    lRow = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行を取得します。
    
    For I = 2 To lRow  'A列の最終行まで繰り返す。
    
    Set MailOutlook = OutlookAP.CreateItem(olMailItem) 'メールアイテムを作成
        
        With MailOutlook
              .To = Cells(I, "B") 'Toのメールを設定
              .CC = Cells(I, "C")  'CCのメールを設定
              .BCC = Cells(I, "D")   'BCCのメールを設定
              .Subject = Cells(I, "E")   '件名を設定)
              .Attachments.Add "C:\test1.xlsx"  '1個目の添付ファイル
              .Body = Cells(I, "H") & "様" & vbCr & Cells(I, "I") & vbCr '本文を設定
        
              .Display  'プレビュー表示
              '.Save    '下書きに保存
              '.Send    'メール送信
        End With
        
              
    Set MailOutlook = Nothing   '次のメールアイテムを作成するため解放
        
    Next I
    
    Set OutlookAP = Nothing
  
End Sub
'

 

 

 

EXCEL VBA メール作成・送信 Outlookで自動メール作成(Outlook)添付ファイルをダイアログボックスで選択して送信

 

 

●プログラム説明 (サンプル③)

下記のサンプルプログラムは、上記サンプルプログラム②の応用になります。今回のプログラムについては、添付ファイルを自由に選択出来るようにして、メールの作成についても”メール作成”にフラグ”●”が登録されているデータについては、メールを作成するプログラムとなっております。毎月同じ宛先にメールを送るけど添付ファイルが異なる時などには、便利だと思います。下記のプログラムについてもプレビューを行い確認後、手動で送信ボタンを押すようにしております。なお、直ぐにメール送信する場合は、【Display 】⇒【Send】に変えるだけで、メールを送信する事ができます。

【プログラムの流れ】(メール送信)
① Outlookオフジェクトの変数宣言
② メール送信用のオブジェクト作成
③ B列の最終行を取得します。(To列:メールアドレス)
④ 添付ファイルのファイルパスをセル(H7)から代入する。
⑤ B列の最終行まで繰り返します。
⑥ E列に”●”があればメールを作成します。無ければ次の行を確認する。
⑦ メールアイテムを作成
⑧ B列から宛先を設定します。(メールアドレスを登録)
⑨ セル(G2)から件名を登録します。
⑩ 添付ファイルの設定(フルパスを設定)
⑪ メール本文を設定(C列から社名・D列から担当者・セル(H2)から本文・H10から署名)
⑨ メール内容を表示(プレビュー表示)
⑩ メール送信用のオブジェクトの解放
⑪ ⑥へ繰り返す。(B列で取得した最終行まで繰り返す。)

【プログラムの流れ】(添付ファイル選択)
① 
ダイアログボックスが表示して、添付ファイルを選択します。
② 添付ファイルが選択されているか判定します。(添付ファイルが選択されていない場合は、プログラムから抜けます。)
③ ファイルが選択されている場合は、選択したファイルのフルパスがセル(H7)へ代入されます。

★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● Outlook03(サンプルプログラム)

 

 

'
'
Sub Outlook_Send02A() 'Outlookで自動メール作成(リスト作成)
    
    Dim OutlookAP As Outlook.Application
    Dim MailOutlook As Outlook.MailItem
    Dim I, lRow As Long
    Dim TempF As String
    Set OutlookAP = CreateObject("Outlook.Application")
    
    lRow = Cells(Rows.Count, "B").End(xlUp).Row 'B列の最終行を取得します。
    
    TempF = Range("H7") '添付ファイルのファイルパスを代入
    
    For I = 2 To lRow   'B列の最終行まで繰り返す。
    
        If Cells(I, "E") = "●" Then 'E列に”●”があれは、メールを作成
            Set MailOutlook = OutlookAP.CreateItem(olMailItem) 'メールアイテムを作成
                
                With MailOutlook
                      .To = Cells(I, "B") 'Toのメールを設定
                      .Subject = Range("G2")   '件名を設定)
                      .Attachments.Add TempF   '添付ファイル
                      .Body = Cells(I, "C") & vbCr & Cells(I, "D") & "様" & _
                        vbCr & Range("H2") & vbCr & Range("H10") '本文と署名を設定
                
                      .Display  'プレビュー表示
                      '.Save    '下書きに保存
                      '.Send    'メール送信
                End With
                      
            Set MailOutlook = Nothing   '次のメールアイテムを作成するため破棄
        End If
    Next I
    
    Set OutlookAP = Nothing
  
End Sub
'
'
'

Sub Outlook_Send02B()  'Outlookで自動メール作成(添付ファイルを選択)

    Dim FilePath As Variant

    FilePath = Application.GetOpenFilename(FileFilter:="ファイル(*.*),*.*") 'ファイルを選択するダイアログボックスを表示します。
 
    If FilePath = False Then 'ファイルが選択されているか判定します。 Exit Sub 'ファイルが選択されていない場合は、プログラムから抜けます。
            Exit Sub 'プログラムから抜けます。
        Else
            Range("H7") = FilePath '選択したファイルパスをセル(H7)に代入します。
    End If

End Sub
'

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA