VBA

【VBAでOutlook操作】

Excel VBA

業務でExcelを使用している方の大半はExcelで集計したり整経したシートをメールに添付して送信するという作業を一日に何度も行っていると思います。

その集計して添付送信する作業を、何回かの記事に分けて完全に自動化していきたいと思います。

今回は、VBAによるOutlookの操作方法を中心に、ポイントを解説します。

オブジェクトの生成

Outlookアプリケーションを用意し、VBAから操作します。それを行っているのが、下記です。

Dim ol As Object
Set ol = CreateObject("Outlook.Application")
If ol Is Nothing Then Exit Sub

新しい「OutlookApplication」オブジェクトが生成され、「ol」という変数名で扱えるようになります。

オブジェクト変数への代入なので「Set」を付けて代入します。

この「Set」はオブジェクト以外の変数代入では使用しません。

Outlookのプロパティ設定

With ol.CreateItem(0)
        .To = "test@example.com"  '送信先
        .CC = "cc@example.com"    'CCのアドレス
        .BCC = "bcc@example.com"  'BCCのアドレス
        .Subject = "Test Title"
        .Attachments.Add "temp.xlsx" '添付ファイル
        .Display
        .Body = "本文を書く欄"
 End With

「CreateItem」メソッドは、OutlookApplicationオブジェクト上に、新しく「Outlookアイテム」を作るメソッドです。

CreateItemメソッドで作成できるアイテムには、幾つかの種類があります。どの種類のアイテムを作成するかは、下記の表の引数に与える値で決定します。

種類 オブジェクト 定数名
メール MailItem olMailItem 0
予定 AppointmentItem olAppointmentItem 1
連絡先 ContactItem olContactItem 2
タスク TaskItem olTaskItem 3

今回は、新しいメールを作成するので、引数として指定する定数は「olMailItem」(0)、生成されるオブジェクトは「MailItem」オブジェクトになります。
※定数名で指定しても構いません。

「To」プロパティ他は、MailItemオブジェクトの送信先アドレス、件名、本文などを指定するプロパティです

設定が完了したら、そのMailItemオブジェクトを下書きとして表示します。その処理を行うのが、「Display」メソッドです。

Displayメソッドが実行されると、自動で本文に既定の署名が呼び出される特性があります。
しかし、Bodyにより本文に値が入った状態で、Displayメソッドを実行しても署名は反映されません。
そのため、一度Displayメソッドを実行し、既定の署名を本文に表示させてから、Bodyでメール本文を挿入しています。

コード全文

Public Sub SendMail()
    Dim FileName As String
    FileName = "ファイル名を指定".xlsx"
  
    Dim ol As Object
    Set ol = CreateObject("Outlook.Application")
    If ol Is Nothing Then Exit Sub
    
    With ol.CreateItem(0)
         .To = "test@example.com"  '送信先
        .CC = "cc@example.com"    'CCのアドレス
        .BCC = "bcc@example.com"  'BCCのアドレス
        .Subject = "Test Title"
        .Attachments.Add FileName  '添付ファイル
        .Display                  '下書きを表示
        .Body = "本文を書く欄"
    End With
    
    Set ol = Nothing 'オブジェクト解放  
End Sub

オブジェクト解放を忘れない様に注意して下さい。

送信処理もマクロで行いたい場合

あまりオススメはしませんが、一気に送信したい方は次の方法で送信が可能です。
※事前に必ずテストして自己責任でお願いします

.Display  ‘下書きを表示
↓メソッドを書き換えます。
.Send  ‘送信

これでマクロを実行すると、メール送信まで行われます。
送信したメールは、Outlookの[送信済みアイテム]に入ります。

次回記事予定

シートからPDFを生成して、メール添付までを書ければと思います。
是非、使ってみてください!!