9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【VBA】メール送信やタスク作成を自動化する

Posted at

概要

PCにOutlookがインストールされている場合、VBAでメール送信を自動化することが出来る。
それによって、例えばExcelで送信先やメール内容を管理して、Excelでマクロを実行してすぐさまメール送信、ということが可能。
条件が整っているのであれば、下手にRPAを作るより効率が良い…。

必要条件

Outlookがインストールされていて、アカウントの設定が1つ以上あること。

準備

Excel VBA(またはWordやAccess)で実装する場合、参照設定を行うとコーディングが楽になる。
VBAのメニュー → ツール → 参照設定を選択。

「Microsoft Outlook xxx Object Library」にチェックを入れて、OKを押す。
※ 「xxx」はインストールされているOfficeのバージョンによって異なる。

メール送信サンプル

MailItem オブジェクト (Outlook) | Microsoft Docs

Public Sub メール送信()
    
    Dim objOutlook As Outlook.Application
    Dim objMail As Outlook.MailItem
    
    Set objOutlook = New Outlook.Application
    Set objMail = objOutlook.CreateItem(olMailItem)
    
    With objMail
        .To = "test1@example.com; test2@example.com"
        .Subject = "テスト件名"
        .Body = "テスト本文"
        .Display    ' メール作成画面で表示するのみ
        
        '.Save   ' 下書き保存
        '.Send   ' メール送信
    End With
    
End Sub

上記サンプルを実行すると、メール作成画面が表示されるので、送信前に内容を確認することができる。送信するには自分で送信ボタンを押す必要がある。

また、差出人はOutlookに設定されているアカウントが使用される。

名前から宛先を指定する

Outlookのアカウントから利用できるアドレス帳を使い、名前から宛先などを指定することができる。
アドレス帳に、以下のような宛先があるとする。

この「山田 太郎」という名前から宛先を取得するのが以下のサンプル。

Public Sub メール送信2()
    
    Dim objOutlook As Outlook.Application
    Dim objMail As Outlook.MailItem
    Dim objRecipient As Outlook.Recipient
    
    Set objOutlook = New Outlook.Application
    Set objMail = objOutlook.CreateItem(olMailItem)
    
    With objMail
    
        Set objRecipient = .Recipients.Add("山田 太郎")
        objRecipient.Resolve
        objRecipient.Type = olCC
    
        .To = "test1@example.com; test2@example.com"
        .Subject = "テスト件名"
        .Body = "テスト本文"
        .Display    ' メール作成画面で表示するのみ
        
    End With
    
End Sub

これを実行すると、以下のメール画面が起動する。

タスクを他人に依頼する

Outlookの機能の1つ、タスクの作成や、そのタスクを人に依頼することもできる。

TaskItem オブジェクト (Outlook) | Microsoft Docs

Public Sub タスク作成()
    
    Dim objOutlook As Outlook.Application
    Dim objTask As Outlook.TaskItem
    Dim objRecipient As Outlook.Recipient
    
    Set objOutlook = New Outlook.Application
    Set objTask = objOutlook.CreateItem(olTaskItem)
    
    With objTask
        .Assign     ' タスクを人に依頼する状態にする
    
        Set objRecipient = .Recipients.Add("山田 太郎")
        objRecipient.Resolve
    
        .Subject = "テスト件名"
        .Body = "テスト本文"
        .DueDate = Now + 30
        .Display
        
    End With
    
End Sub

サンプルを実行した結果は以下の通り。

9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?