VBA【メール送信】ExcelとOutlookを連携してメールを送信

OutlookのメールはExcelのマクロを使用してメールを送信する事が可能です。

「Excel」と「Outlook」が連携できるのは、Microsoftだからですね。

Excel VBAからOutlookでメールを送信する方法をサンプルコードを元に解説します。

メールを送信するVBAのサンプルコードは、そのままテンプレートとして使用できます。

Outlookを使用するので、難しいと思いがちですが、特に難しくはありません。

エクセルで作成した情報を元にメールを送信したい時や
送り先アドレスによって少し文面を変えたい時にExcel VBAからメールを送るとかなり楽になるので
ぜひ、VBAでメール送信する方法を覚えてください。

◆準備するもの

・Excel

エクセルは当然必要ですね。

・Outlook

エクセルのマクロでアウトルックからメールを送信するので必ず必要です。

Outlookでメールを送受信できるような状態であれば、特に設定をする必要はありません。

要は、初期設定だけすれば、良いです。

Microsoft製のメールソフトを持っていない方はこちらからどうぞ。

◆VBAでメール送信する方法を解説

下記、サンプルコードの最低限の項目を変更すれば、ボタンにマクロ設定するだけで
VBAでメールを送信する事が出来ます。

・サンプルコード(テンプレート)

Public FileFullName As String
Sub メール送信()
'Outlookは「ツール」→「参照設定」(Alt→T→R)
'「Microsoft Outlook XX.X Object Library」にチェック
Dim ToAddress As String, CcAddress As String, BccAddress As String
Dim Subject  As String, MailBody   As String, Credit As String
Dim AttachmentPath As String
Dim OutlookObj As Outlook.Application    'Outlookで使用するオブジェクト生成
Dim MailItemObj As Outlook.MailItem      'Outlookで使用するオブジェクト生成
Dim bufSh As Worksheet
Dim DisplaySetting As Boolean

Set bufSh = ThisWorkbook.Sheets(1)
DisplaySetting = True           '作成したメールを表示する設定
'DisplaySetting・・ True :作成したメールを確認してから、送信ボタンを押して送信
'                   False:作成したメールを確認しないで、自動送信
'DisplaySetting = bufSh.[A1]    '設定をワークシートから取得
'AttachmentPath = FileFullName  '添付ファイルのフルパス

With bufSh
'●差出人、本文、署名を取得する
    '送信先アドレス
    ToAddress = "***@jovba.com"     '送信先
    CcAddress = "***@jovba.com"     'CC
    BccAddress = ""                 'BCC
    'タイトル(件名)
    Subject = "タイトル"
    'メール本文
    MailBody = "○○ 様" & vbCrLf _
                & "お世話になっております。" & vbCrLf _
                & "株式会社JoVBA です。" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf _
    'クレジット(署名) メール本文末尾
    Credit = "------------------------------------------" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf _
                & "" & vbCrLf
End With
'●メールを作成
Set OutlookObj = CreateObject("Outlook.Application")
Set MailItemObj = OutlookObj.CreateItem(olMailItem)
With MailItemObj
    .BodyFormat = 1     '2:HTML_3:リッチテキスト
    .To = ToAddress     'toをセット
    .CC = CcAddress     'ccをセット
    .BCC = BccAddress   'bccをセット
    .Subject = Subject  '件名をセット
    .Body = MailBody _
            & vbCrLf & Credit    'メール本文 & クレジット
'●添付ファイル
'    .Attachments.Add AttachmentPath
'●メールを送信する
'    .Save          '下書き保存
    If DisplaySetting Then
        .Display    'メール表示
    Else
        .Send       '送信
    End If
End With

'●outlookを閉じる(オブジェクトの解放)
Set OutlookObj = Nothing
Set MailItemObj = Nothing

End Sub

・サンプルコードの解説

Outlookの参照設定とメールの送り先と本文を設定すれば
最低限のメールを作成し、送信することは、できます。

Outlookの参照設定

ExcelのVBAからOutlook」を使用するには、「参照設定」をする必要があります。

初心者の方は、ここで苦戦する方もいると思います。

他のサイトでは、メール送信のサンプルコードだけ紹介して
Outlookを参照設定する方法を解説していない事が多々あります。

マクロ実行した時に「ユーザ定義型は定義されていません。」とエラーが出る時の対策は、適切な「参照設定」をする事です。

参照設定 エラー ユーザ定義型は定義されていません。

参照設定をする方法は、VBE上部のメニューバーの「ツール」から設定します。

VBEとは?

「ツール」
→「参照設定」(Alt→T→Rでも可)

→「Microsoft Outlook XX.X Object Library」にチェック
を入れると参照設定完了です。

「XX.X」の部分はバージョンを表しているので「16.0」ではない、違う数字の方もいると思います。

今回のサンプルコードでは、「Outlook.Application」と「Outlook.MailItem」
を使用しています。

ですので、参照設定ができていない場合は
「Dim OutlookObj As Outlook.Application」の行で
「ユーザ定義型は定義されていません。」とコンパイルエラーが出ます。

メールの作成

下記4点でメールを作成するのに必要な情報(アドレスや本文など)を設定しています。

  • 送信先アドレス「変数:ToAddress」
  • タイトル(件名)「変数:Subject」
  • メール本文「変数:MailBody」
  • クレジット(署名)「変数:Credit」

少なくても、送信先アドレスの[変数:ToAddress]メール本文の[変数:MailBody]の値を
変更すればメールは作成できます。

・メールのその他設定

メール送信サンプルコードの一部変数に代入された値を変更する事によって
多少、設定を変更することができます。

コメント化している部分のコメント化を解除する事で下記の設定を変更できます。

添付ファイル

「AttachmentPath = FileFullName ‘添付ファイルのフルパス」の部分をコメント解除することで
VBAでメールを送信する時に添付ファイルを添付する事が可能になります。

「変数:FileFullName」には、添付ファイルのフルパスを格納します。

フルパスとは、ドライブ名からファイルの拡張子までの事を指します。

作成したメールの表示設定

初期設定は、「DisplaySetting = True」なので
VBAで作成したメールを表示して、メール確認後に自分で送信ボタンを押すようにしています。

[変数:DisplaySetting]を「False」にすると、作成したメールの確認はできませんが
Excelのマクロを実行するだけで、メールが送信されます。

「DisplaySetting = bufSh.[A1]」をコメントを解除すると、シートから
[変数:DisplaySetting]の設定を変更可能になります。

◆テンプレートとして使用する方法

上記、サンプルコードは、そのままテンプレートとしても使用できます。

ですが、最低限、下記3点を設定や変数の値を変更してください。

◆まとめ

VBAでメールを作成し、送信する方法を解説しました。

思ったより簡単だったではないでしょうか。

設定変更可能なVBAメール送信のテンプレートがあるので、さらに簡単だと思います。

Outlookの参照設定だけは、必ずしてくださいね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です