Excelファイルの更新をメールで通知する方法【業務自動化】
2020/12/21
ファイルを複数人で共有している時など、更新時にメンバーへ連絡することがルール化されている場合があります。
毎回、口頭や手動でメールで連絡していると、連絡漏れや連絡が遅れることが発生する可能性があります。
この記事では、VBAでメール送信機能を作成し、メール通知を自動化する方法を記載します。
メール通知の自動化は、Excel以外にもWordやAccessなどVBAが使えるOfficeソフトであれば、汎用的に使用できますので、業務の効率化を図ることができます。
Outlookの設定
メール送信機能は、VBAからMicrosoft Outlookの機能を使ってメールを送信します。
事前にMicrosoft Outlookにアカウント設定がされていること、メールが送受信ができることを確認してください。
すでにMicrosoft Outlookを使われている方は、再設定する必要はありません。
サンプルファイル
メール送信機能を実装したサンプルファイルをリンクしますので、ご自由にお使いください。
設定シートの項目にメールアドレスなどを入力することでメール通知を行うことができます。

sample.xlsm
参照設定の追加
ここからは、メール送信機能を自身で作成する方法を記載します。
VBAからMicrosoft Outlookの機能を使用するために「Microsoft Outlook 16.0 Object Library」の参照設定を追加します。
メール送信機能コード
VBAのコードを記載します。
Option Explicit '設定シート情報 Private Const SETTING_SHEET_NAME As String = "設定シート" Private Const RANGE_TO As String = "B3" Private Const RANGE_CC As String = "B4" Private Const RANGE_BCC As String = "B5" Private Const RANGE_SUBJECT As String = "B6" Private Const RANGE_BODY As String = "B7" '送信ボタン押下時の処理 Public Sub SendBtnClicck() Dim wsSetting As Worksheet Set wsSetting = ThisWorkbook.Sheets(SETTING_SHEET_NAME) If wsSetting.OLEObjects("OptBtnSend").Object.Value Then Call SendEmail End If End Sub 'ファイル保存時の処理 Private Sub Workbook_AfterSave(ByVal Success As Boolean) Dim wsSetting As Worksheet Set wsSetting = ThisWorkbook.Sheets(SETTING_SHEET_NAME) If wsSetting.OLEObjects("OptBtnSave").Object.Value Then Call SendEmail End If End Sub 'メール送信の処理 Private Sub SendEmail() On Error GoTo ErrorHandler Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Dim wsSetting As Worksheet Set objOutlook = New Outlook.Application Set objMail = objOutlook.CreateItem(olMailItem) Set wsSetting = ThisWorkbook.Sheets(SETTING_SHEET_NAME) '設定シートの値を設定する With wsSetting objMail.TO = .Range(RANGE_TO).Value 'TO objMail.CC = .Range(RANGE_CC).Value 'CC objMail.BCC = .Range(RANGE_BCC).Value 'BCC objMail.Subject = .Range(RANGE_SUBJECT).Value '件名 objMail.Body = .Range(RANGE_BODY).Value '本文 'メールの形式 If wsSetting.OLEObjects("OptBtnHTML").Object.Value Then objMail.BodyFormat = olFormatHTML End If If wsSetting.OLEObjects("OptBtnPlain").Object.Value Then objMail.BodyFormat = olFormatPlain End If End With 'メール送信 objMail.Send GoTo Finally ErrorHandler: MsgBox "メールの送信に失敗しました", vbOKOnly + vbCritical Finally: Set objOutlook = Nothing End Sub
Google AdSense PC
Google AdSense PC
関連記事
-
-
[Windows]指定サイズのファイルを作成する
ネットワークの通信速度などを調査する場合にサイズの大きなファイルを作成する必要があります。 この記事では「fsutil」コマンドを使用したダミーファイルの作成方 …
-
-
[Windows]リモートデスクトップのシングルサインオン
ドメイン参加PCでシングルサインオンする Active Directoryのドメインに所属した場合、既定の設定のままでは、資格情報が使用できないため、 リモート …
-
-
[Windows]WSUSサーバの構築手順 2/6
Windows 2008 R2サーバにWSUSサーバを構築する Report Viewerのインストール Microsoftのサイトより[Microsoft R …
-
-
エクセルで円と銭の通貨単位を表示する
Excelで入力した数値に円と銭の単位を表示する方法を記載します。 2種類の表示方法がありますので、用途に応じて使い分けてください。 セルの書式設定で表示 セル …
-
-
VBAで形式を指定して日付を取得する
VBAで西暦や和暦の日付形式に変換するには「FORMAT」関数に引数を指定することで意図した日付形式に変換することができます。 日付を表示 Date関数で今日の …
-
-
[Windows]WSUSサーバの構築手順 5/6
Windows 2008 R2サーバにWSUSサーバを構築する WSUS(Windows Server Update Service)の設定 [スタート]-[す …
-
-
既存パソコンを有効活用した、Windows 10への移行方法を考える
企業や個人用など数多くのパソコンで稼働しているOS、Windows 7のサポート期間が2020年1月14日に終了します。 サポート期間終了に向けてWindows …
-
-
[Windows]Active ReportsでPDF出力時の注意事項
PDF出力時の「LicenseException」対応方法 環境 ActiveReports for .NET 7.0J 言語:C# 設定 Active Rep …
-
-
Windows標準機能を使ってフォルダの作成を自動化する方法
バッチファイルとタスクスケジューラでフォルダの作成を自動化する方法を記載します。 この記事の例では、毎月1日になると指定した場所に年月のフォルダを作成します。 …
-
-
Emotetの感染チェックツール「EmoCheck」を定期的に自動実行する方法
Emotetの感染チェックツールEmoCheckをドメイン環境下のパソコンで定期的に自動実行する設定方法を記載します。 自動実行の概要 ① EmoCheckを起 …