1つのExcelファイルを複数人で共有して編集する場合など、内容を更新した時にメールや電話で共有メンバーへ連絡していませんか。
更新のたびに連絡していると、連絡漏れや連絡が遅れることが発生していないでしょうか。
この記事では、VBAのメール送信機能を利用し、ファイルの保存時などに更新メールを自動的に送信する方法を記載します。
メール送信を自動化することで、面倒な作業とうっかりミスを削減することができ業務効率の向上にもつながります。
Excel以外にもWordやAccessなどVBAが使えるOfficeソフトであれば、同じ方法でメール送信を自動化することができます。
VBAからメールを送信する
VBAからメールを送信するためには、Outlookの設定とメール送信プログラムを作成する必要があります。
順番に設定手順を説明します。
Outlookの設定
メール送信機能は、VBAからMicrosoft Outlookの機能を使ってメールを送信します。
事前にMicrosoft Outlookにアカウント設定がされていること、メールが送受信ができることを確認してください。
すでにMicrosoft Outlookを使われている方は、再設定する必要はありません。
参照設定の追加
VBAからMicrosoft Outlookの機能を使用するために「Microsoft Outlook 16.0 Object Library」の参照設定を追加します。
メール送信プログラム
VBE(Visual Basic Editor)の画面を開いてメールを送信するコードを入力します。
MailItemオブジェクト
VBAからメールを送信するためにOutlookアプリケーションオブジェクトを利用します。
'Outlookを操作するオブジェクト Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Set objOutlook = New Outlook.Application Set objMail = objOutlook.CreateItem(olMailItem)
Outlookの機能は、メール以外にも予定表、連絡先、タスクをVBAから操作することができます。
種類 | オブジェクト | 定数 |
---|---|---|
メール | MailItem | olMailItem |
予定表 | AppointmentItem | olAppointmentItem |
連絡先 | ContactItem | olContactItem |
タスク | TaskItem | olTaskItem |
MailItemプロパティ
MailItemオブジェクトのプロパティにメール情報を設定します。
メールアドレスを複数設定するときは「;」セミコロンで区切ります。
With objMail .TO = "to@skill-note.net" '宛先のメールドレス .CC = "cc@skill-note.net" 'CCのメールドレス .BCC = "bcc@skill-note.net" 'BCCのメールドレス .Subject = "Title" 'メールの件名 .Body = "Body" 'メールの本文 .BodyFormat = olFormatHTML 'メールの形式 HTML形式:olFormatHTML テキスト形式:olFormatPlain .Attachments.Add("C:\aaa.txt") '添付ファイル End With
MailItemメソッド
MailItemオブジェクトのsendメソッドでメールを送信します。
objMail.Send
MailItemオブジェクトのメソッドでは、メールの送信以外にも下書き保存したり印刷することもできます。
種類 | メソッド |
---|---|
送信 | Send |
保存 | Save |
印刷 | PrintOut |
メール送信機能のコード
Outlookからメールを送信するVBAコードを記載します。
Option Explicit 'メール送信処理 Private Sub SendEmail() On Error GoTo ErrorHandler 'Outlookを操作するオブジェクト Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Set objOutlook = New Outlook.Application Set objMail = objOutlook.CreateItem(olMailItem) With objMail .TO = "to@skill-note.net" '宛先のメールドレス .CC = "cc@skill-note.net" 'CCのメールドレス .BCC = "bcc@skill-note.net" 'BCCのメールドレス .Subject = "Title" 'メールの件名 .Body = "Body" 'メールの本文 .BodyFormat = olFormatHTML 'メールの形式 HTML形式:olFormatHTML テキスト形式:olFormatPlain .Attachments.Add("C:\aaa.txt") '添付ファイル End With 'メール送信 objMail.Send GoTo Finally ErrorHandler: MsgBox "メールの送信に失敗しました", vbOKOnly + vbCritical Finally: Set objOutlook = Nothing End Sub
サンプルファイル
メール送信機能を実装したサンプルファイルをリンクしますので、ご自由にお使いください。
設定シートの項目にメールアドレスなどを入力することでメール通知を行うことができます。