【VBA】Outlookから自動メール送信する方法(Outlookインストール必要、マクロ)

定期的な定型メール送信を行っているあなたは、日々のメール業務を効率化したいと考えているのではないでしょうか?
この記事では、Excel VBAを使ってOutlookからメールを自動送信する方法を、初心者の方にもわかりやすく解説します。
繰り返し行うメール送信作業を自動化することで、貴重な時間と労力を大幅に節約できます。
例えば、顧客リストに基づいて定期的に進捗状況を報告したり、Excelで管理しているデータを添付して関係者に送付したりする作業も、VBAを使えば一瞬で完了します。
さあ、VBAの力を活用して、煩雑なメール送信業務から解放され、より生産性の高い働き方を実現しましょう!
もし、GmailやYahooメールで自動送信したい場合は以下のリンクで紹介していますのでこちらを確認ください。
→VBAでメーラーなしで自動メール送信する方法
事前準備:Outlook VBAの参照設定
VBAでOutlookを操作するためには、最初に「参照設定」という準備が必要です。
これは、VBAエディタ上でOutlookの機能を利用できるようにするための設定です。この設定を行うことで、VBAからOutlookのオブジェクトやメソッドにアクセスできるようになり、メールの作成や送信といった操作が可能になります。
ここでは、その具体的な手順と、参照設定を行わずにCreateObject
関数を使う別の方法について解説します。
参照設定の手順
参照設定は、VBAでOutlookを操作するための最初のステップであり、非常に重要です。
この設定を済ませていないと、VBAはOutlookの存在を認識できず、プログラムが正常に動作しません。
多くの記事でこの手順が最初に解説されていることからも、その重要性が伺えます。
具体的な手順は以下の通りです。
- Excelを開き、
Alt + F11
キーを押してVBAエディタ(Visual Basic Editor)を起動します。 - VBAエディタのメニューバーから「ツール(T)」→「参照設定(R)…」を選択します。
- 「参照設定」ダイアログボックスが表示されるので、リストの中から「Microsoft Outlook XX.X Object Library」を探し、チェックボックスにチェックを入れます。(XX.Xの部分はOutlookのバージョンによって異なります。)
- 最後に「OK」ボタンをクリックして、参照設定を完了します。
この参照設定を行うことで、VBAのコード内でOutlookのオブジェクト(例えば、ApplicationオブジェクトやMailItemオブジェクト)を型指定して宣言できるようになり、コーディング時の入力補完(IntelliSense)機能が利用できるようになります。
これにより、スペルミスを防ぎ、より効率的にコードを書くことができるというメリットがあります。
CreateObject
を使う方法
参照設定を行う以外にも、CreateObject
関数を使ってOutlookアプリケーションのオブジェクトを作成する方法があります。
この方法は、参照設定を行わなくてもOutlookを操作できるため、異なる環境でマクロを使用する場合などに便利です。
基本的なコードは以下のようになります。
Dim outlookApp As Object
Set outlookApp = CreateObject("Outlook.Application")
CreateObject("Outlook.Application")
と記述することで、Outlookアプリケーションの新しいインスタンスが作成され、outlookApp
という変数に代入されます。
その後は、この変数を通じてOutlookの様々な機能をVBAから利用することができます。
ただし、CreateObject
を使う場合は、参照設定のように型指定ができないため、入力補完機能が利用できません。
また、新しいOutlook(One Outlook)では、CreateObject
を使用するとエラーが発生する可能性があるという報告もあります。
そのため、特に理由がない場合は、前述の参照設定を行う方法が推奨されます。
エラー処理の観点からは、CreateObject
を使用する際に、Outlookがインストールされていないなどの理由でオブジェクトの作成に失敗する可能性があります。
このような場合に備えて、On Error Resume Next
ステートメントと組み合わせて、オブジェクトが正常に作成されたかどうかを確認するコードを記述することが推奨されます。
特徴 | 参照設定 | CreateObject |
---|---|---|
開発時の利便性 | IntelliSenseが利用可能、タイプミスを防ぐ | IntelliSenseは利用できない |
実行時の柔軟性 | 常に同じバージョンのOutlookを参照 | Outlookが起動していなくても新しいインスタンスを作成可能 |
新しいOutlookとの互換性 | 問題なし(確認済み) | エラーが発生する可能性あり([6, 7]) |
エラー処理 | 標準的なVBAのエラー処理 | On Error Resume Next との組み合わせが有効([8]) |
基本:VBAでOutlookメールを送信する
さあ、これで準備は完了です。いよいよVBAを使ってOutlookから実際にメールを送信してみましょう!
ここでは、最も基本的なメール送信のコードと、宛先、件名、本文といった主要な項目を設定する方法を解説します。
簡単なメール送信コード
VBAでOutlookメールを送信する基本的なコードは、いくつかのステップに分かれています。
まず、Outlookアプリケーションのオブジェクトを作成し、次にメールを作成するためのオブジェクトを取得します。そして、宛先や件名、本文などの情報を設定し、最後にメールを送信または表示します。
以下は、最もシンプルなメール送信コードの例です。
Sub SendBasicEmail()
' Outlookアプリケーションオブジェクトの作成
Dim outlookApp As Object
Set outlookApp = CreateObject("Outlook.Application")
' メールアイテムオブジェクトの作成
Dim mailItem As Object
Set mailItem = outlookApp.CreateItem(0) ' 0 は olMailItem を意味します
' 宛先、件名、本文の設定
mailItem.To = "recipient@example.com"
mailItem.Subject = "テストメール"
mailItem.Body = "これはVBAから送信されたテストメールです。"
' メールを送信する(確認なし)
mailItem.Send
' オブジェクトの解放
Set mailItem = Nothing
Set outlookApp = Nothing
End Sub
このコードを実行すると、「recipient@example.com」宛に件名が「テストメール」、本文が「これはVBAから送信されたテストメールです。」というメールが送信されます。
outlookApp.CreateItem(0)
の0
は、新しいメールアイテム(olMailItem
)を表す定数です。
メールの形式をプレーンテキストに設定したい場合は、以下のようにBodyFormat
プロパティを設定します。
mailItem.BodyFormat = olFormatPlain
宛先、件名、本文の設定
上記の例では、To
プロパティに宛先、Subject
プロパティに件名、Body
プロパティに本文を設定しています。
これらのプロパティに値を代入することで、送信するメールの内容を自由にカスタマイズできます。
以下に、それぞれのプロパティの設定例を示します。
- 宛先(To):
mailItem.To = "recipient1@example.com"
- CC(Carbon Copy):
mailItem.CC = "ccrecipient@example.com"
- BCC(Blind Carbon Copy):
mailItem.BCC = "bccrecipient@example.com"
- 件名(Subject):
mailItem.Subject = "会議の議事録"
- 本文(Body):
mailItem.Body = "本日の会議の議事録を添付しました。ご確認ください。"
また、メールを送信する前に内容を確認したい場合は、Send
メソッドの代わりにDisplay
メソッドを使用します。
mailItem.Display
Display
メソッドを使うと、作成されたメールがOutlookの新規作成ウィンドウに表示されるため、内容を確認してから手動で送信することができます。
誤送信を防ぎたい場合や、送信前に最終的な編集を行いたい場合に便利です。
応用:メール送信のカスタマイズ
基本的なメール送信ができるようになったら、さらにメール送信をカスタマイズしてみましょう。
ここでは、CCやBCCの追加、複数の宛先の指定、ファイルの添付、HTML形式での送信など、より高度なテクニックを解説します。
CCとBCCの追加
CC(カーボンコピー)やBCC(ブラインドカーボンコピー)を追加するには、MailItem
オブジェクトのCC
プロパティとBCC
プロパティを使用します。
これらのプロパティに、CCやBCCに追加したいメールアドレスを文字列で代入します。複数のアドレスを追加する場合は、セミコロン(;)で区切ります。
mailItem.CC = "cc1@example.com; cc2@example.com"
mailItem.BCC = "bcc1@example.com; bcc2@example.com"
複数の宛先を指定する方法
複数の宛先を指定する場合も、To
、CC
、BCC
の各プロパティに、メールアドレスをセミコロン(;)で区切って設定します。
mailItem.To = "recipient1@example.com; recipient2@example.com; recipient3@example.com"
Excelのシートに複数の宛先がリスト化されている場合は、ループ処理を使って各セルからメールアドレスを読み込み、セミコロンで連結してTo
プロパティに設定する方法も考えられます。
ファイルを添付する方法
メールにファイルを添付するには、MailItem
オブジェクトのAttachments
コレクションにあるAdd
メソッドを使用します。Add
メソッドの引数には、添付したいファイルのフルパスを指定します。
mailItem.Attachments.Add "C:\path\to\your\file.pdf"
mailItem.Attachments.Add "D:\another\file.xlsx"
複数のファイルを添付する場合は、Add
メソッドを複数回呼び出します。
ただし、添付ファイルの合計サイズがメールサーバーの制限を超える場合があるので注意が必要です。
HTML形式でメールを送信する方法
メールの本文をHTML形式で送信したい場合は、Body
プロパティの代わりにHTMLBody
プロパティを使用します。
HTMLBody
プロパティには、HTML形式の文字列を設定します。
これにより、フォントの種類やサイズ、色、画像の挿入など、リッチテキスト形式のメールを送信することができます。
mailItem.HTMLBody = "<p><b>重要なお知らせ</b></p><p><font color='red'>詳細は<a href='https://example.com'>こちら</a>をご覧ください。</font></p>"
Excelの特定の範囲をHTML形式に変換してメール本文に挿入することも可能です。
これには、少し高度なテクニックが必要になりますが、表形式のデータをメールで共有する際に非常に便利です。
本文にハイパーリンクを設定する方法
HTML形式のメールであれば、通常のHTMLと同様に<a href="">
タグを使ってハイパーリンクを設定できます。
HTMLBody
プロパティに、ハイパーリンクを含んだHTML文字列を設定することで、メール本文にクリック可能なリンクを埋め込むことができます。
mailItem.HTMLBody = "<p>詳細は<a href='https://example.com'>こちらのウェブサイト</a>をご覧ください。</p>"
実践:Excelデータと連携したメール送信
VBAの大きなメリットの一つは、Excelをはじめとする他のOfficeアプリケーションとの連携が容易なことです。
ここでは、Excelに保存されたデータを読み取り、そのデータに基づいてOutlookから自動的にメールを送信する方法を解説します。
Excelのデータを取得する
ExcelのデータをVBAで取得するには、Worksheets
コレクションやCells
プロパティ、Range
プロパティなどを使用します。
例えば、特定のシートの特定のセルの値を取得するには、以下のように記述します。
Dim data As String
data = ThisWorkbook.Worksheets("Sheet1").Cells(1, 1).Value ' Sheet1のA1セルの値を取得
複数のセル範囲の値を取得する場合は、Range
プロパティを使用します。
Dim dataRange As Variant
dataRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:B10").Value ' Sheet1のA1からB10の範囲の値を取得
最終行を動的に取得してループ処理を行うことで、Excelに保存された可変長のデータリストに基づいてメールを送信することも可能です。
Dim lastRow As Long
lastRow = ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row ' Sheet1のA列の最終行を取得
For i = 2 To lastRow ' 2行目から最終行までループ
Dim recipient As String
recipient = ThisWorkbook.Worksheets("Sheet1").Cells(i, 2).Value ' B列のメールアドレスを取得
'... メール送信処理...
Next i
取得したデータをメールに反映させる
取得したExcelのデータは、MailItem
オブジェクトの各種プロパティ(To
、Subject
、Body
など)に代入することで、送信するメールの内容に反映させることができます。
例えば、ExcelのB列にメールアドレス、C列に件名、D列に本文が記載されている場合、以下のようなコードで各行のデータに基づいてメールを送信できます。
Sub SendMailsFromExcelData()
Dim outlookApp As Object
Set outlookApp = CreateObject("Outlook.Application")
Dim mailItem As Object
Dim lastRow As Long
lastRow = ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lastRow
Set mailItem = outlookApp.CreateItem(0)
mailItem.To = ThisWorkbook.Worksheets("Sheet1").Cells(i, 2).Value ' B列:宛先
mailItem.Subject = ThisWorkbook.Worksheets("Sheet1").Cells(i, 3).Value ' C列:件名
mailItem.Body = ThisWorkbook.Worksheets("Sheet1").Cells(i, 4).Value ' D列:本文
mailItem.Send
Set mailItem = Nothing
Next i
Set outlookApp = Nothing
MsgBox "メール送信が完了しました。"
End Sub
より複雑なメール本文を作成したい場合は、Excelから取得したデータを組み合わせて文字列を作成し、Body
プロパティに代入します。
プレースホルダーを使用する方法も有効です。
例えば、ExcelのE列に顧客名が記載されている場合、メール本文に顧客名を含めることができます。
mailItem.Body = ThisWorkbook.Worksheets("Sheet1").Cells(i, 4).Value & " " & ThisWorkbook.Worksheets("Sheet1").Cells(i, 5).Value & "様"
複数の宛先に個別のメールを送信する方法
Excelに複数の宛先がリストされている場合、ループ処理を使って各宛先に個別のメールを送信するのが一般的です。
前述の例もその一つですが、宛先ごとにメールの内容を少しずつ変えたい場合にも、この方法が有効です。
例えば、Excelの各行に宛先、件名、本文が記載されており、それぞれ異なる内容のメールを送信したい場合は、ループ内でそれぞれの情報を取得し、MailItem
オブジェクトに設定して送信します。
また、Excelの表データをHTML形式でメール本文に挿入し、条件に基づいて送信する例も紹介されています。
これにより、見やすい形式で情報を共有できます。
さらに、Excelのデータを使ってメール本文を動的に作成する方法も、YouTube動画などで紹介されています。
効率化:メールテンプレートの活用
定型的なメールを頻繁に送信する場合、Outlookのメールテンプレートを活用することで、さらに作業を効率化できます。
ここでは、メールテンプレートの作成方法と、VBAからそのテンプレートを読み込んでメールを送信する方法を解説します。
メールテンプレートを作成する
Outlookのメールテンプレート(.oftファイル)を作成するのは非常に簡単です。
- Outlookを起動し、「新しいメール」を作成します。
- 件名、本文など、テンプレートとして保存したい内容を入力します。
- 「ファイル」タブをクリックし、「名前を付けて保存」を選択します。
- 「ファイルの種類」で「Outlookテンプレート (*.oft)」を選択します。
- 保存場所とファイル名を指定し、「保存」をクリックします。
これで、メールテンプレートファイルが作成されました。通常、テンプレートファイルは以下の場所に保存されます。
C:\Users\<あなたのユーザー名>\AppData\Roaming\Microsoft\Templates
VBAでテンプレートを読み込んで送信する
作成したメールテンプレートをVBAから読み込んでメールを送信するには、Application
オブジェクトのCreateItemFromTemplate
メソッドを使用します。
このメソッドの引数には、テンプレートファイルのフルパスを指定します。
Sub SendEmailFromTemplate()
Dim outlookApp As Object
Set outlookApp = CreateObject("Outlook.Application")
Dim mailItem As Object
Dim templatePath As String
templatePath = "C:\Users\<あなたのユーザー名>\AppData\Roaming\Microsoft\Templates\my_template.oft" ' テンプレートファイルのパスを指定
Set mailItem = outlookApp.CreateItemFromTemplate(templatePath)
' 必要に応じて、宛先や件名などを設定
mailItem.To = "recipient@example.com"
mailItem.Subject = "テンプレートから送信"
mailItem.Display ' または mailItem.Send
Set mailItem = Nothing
Set outlookApp = Nothing
End Sub
このコードを実行すると、指定したテンプレートファイルの内容が反映された新しいメールが作成されます。
必要に応じて、宛先や件名などをVBAでさらに設定することも可能です。
複数の宛先に同じテンプレートを使ってメールを送信する例も紹介されています。
また、テンプレートから作成したメールには、Outlookの設定によっては自動的に署名が付加される場合があります。
これを抑制する方法も議論されています。
さらに、テンプレート内の特定のキーワード(プレースホルダー)をExcelのデータで置換する方法も提案されています。
トラブルシューティング:よくあるエラーと対策
VBAでOutlookメール送信を自動化する際には、いくつかのエラーに遭遇する可能性があります。
ここでは、よくあるエラーとその原因、そしてその対策について説明します。
参照設定に関するエラー
参照設定が正しく行われていない場合、「オブジェクトが必要です」といったエラーが発生することがあります。
これは、VBAがOutlookのオブジェクトを認識できていないことが原因です。
対策: VBAエディタの「ツール」→「参照設定」で、「Microsoft Outlook XX.X Object Library」にチェックが入っているか再度確認してください。
チェックが入っていない場合は、チェックを入れて「OK」をクリックします。
オブジェクトの作成に関するエラー
新しいOutlook(One Outlook)を使用している場合、CreateObject("Outlook.Application")
でエラーが発生することが報告されています。
具体的には、「システムエラー &H80080005 (-2146959355). Failed to start server.」や「ActiveXコンポーネントによるオブジェクトの作成はできません」といったエラーメッセージが表示されることがあります。
対策: 現時点では、新しいOutlookとVBAの連携に一部問題が確認されています。
可能であれば、従来のOutlookに戻して使用するか、Power Automateなどの代替手段を検討する必要があります。
送信に関するエラー
メールの送信処理中にエラーが発生する場合、原因は様々です。Outlookのセキュリティ設定が高すぎる場合や、企業ポリシーによって外部からのメール送信が制限されている場合などが考えられます。
また、Send
メソッドの呼び出し時にエラーが発生するケースも報告されており、Outlookのバージョンによって動作が異なる可能性も示唆されています。
対策: Outlookの「ファイル」→「オプション」→「セキュリティセンター」→「セキュリティセンターの設定」で、プログラムによるOutlookへのアクセスに関する設定を確認してください。
また、エラーが発生する直前のコードやOutlookのバージョンに関する情報を確認し、必要に応じてコードを修正する必要があります。
基本的なエラー処理(On Error GoTo
など)を実装しておくことも重要です。
エラーメッセージ | 原因 | 対策 |
---|---|---|
無効な参照 | 参照設定が正しく行われていない | 「Microsoft Outlook XX.X Object Library」が参照設定で選択されているか確認する。 |
システムエラー &H80080005 (-2146959355) | 新しいOutlookで CreateObject を使用している | 古いOutlookに戻すか、Power Automateなどの代替手段を検討する。 |
ActiveXコンポーネントによるオブジェクトの作成はできません | 新しいOutlookで CreateObject を使用している | 古いOutlookに戻すか、Power Automateなどの代替手段を検討する。 |
送信許可がない | Outlookのセキュリティ設定または企業ポリシーによる制限 | Outlookのセキュリティ設定を確認する。企業ポリシーについてはシステム管理者にお問い合わせください。 |
Send メソッドでエラーが発生する | Outlookのバージョンによる動作の違い、オブジェクトの状態など | コードを実行する前に、必要なオブジェクトが正しく初期化されているか確認する。Outlookのバージョンに関する情報を確認する。 |
さらに便利に:メール送信の遅延設定
VBAを使うと、作成したメールをすぐに送信するのではなく、特定の日時や条件に基づいて送信を遅延させることも可能です。ここでは、その方法を解説します。
特定の時間に送信を遅らせる
メールの送信を特定の日時に遅らせるには、MailItem
オブジェクトのDeferredDeliveryTime
プロパティを使用します。
このプロパティに、送信したい日時をDate型の値または文字列で設定します。
Dim sendTime As Date
sendTime = DateAdd("h", 3, Now) ' 現在時刻から3時間後に送信
mailItem.DeferredDeliveryTime = sendTime
' または
mailItem.DeferredDeliveryTime = "2024/12/31 23:59:59"
特定の条件で送信を遅らせる
Application_ItemSend
イベントを利用すると、特定の条件に基づいてメールの送信を遅延させることができます。
このイベントは、メールが送信される直前に発生するため、ここで送信をキャンセルしたり、送信日時を変更したりすることができます。
例えば、営業時間外に送信されるメールを翌営業日の朝8時に遅らせるには、以下のようなコードをThisOutlookSession
モジュールに記述します。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim currentTime As Date
currentTime = Time
' 午後7時以降または午前7時以前に送信しようとした場合
If currentTime < TimeSerial(7, 0, 0) Or currentTime > TimeSerial(19, 0, 0) Then
Item.DeferredDeliveryTime = DateAdd("d", IIf(currentTime >= TimeSerial(19, 0, 0), 1, 0), Date) + TimeSerial(8, 0, 0)
MsgBox "このメールは翌営業日の午前8時に送信されます。", vbInformation
End If
End Sub
このコードでは、送信時間が午前7時より前または午後7時より後の場合、送信日時を翌営業日の午前8時に設定し、その旨をメッセージボックスで通知しています。
週末を考慮したより複雑な条件設定も可能です。
VBA(マクロ)でOutlookからメールを作成して自動送信するサンプルプログラム
Outlookアプリを使い、VBAでメール送信するサンプルプログラムです。
端末やサーバにOutlookのインストールが必要です。
また、送信できるまでの設定をしておく必要があります。
・実行環境にOutlookのインストールが済んでいること
・アカウント設定等も完了していて、メールの送信ができること
※Outlookアプリの起動は必要ありません
以下にVBAプログラムを記載します。
VBA(マクロ)プログラム
VBAによるOutlookメール送信のプログラムです。
- '*****************************************
- '* Outlookメール送信
- '*****************************************
- Sub MailSendOutlook_()
- Dim objApp As Object 'Outlookメールアプリ格納
- Dim objMail As Object 'メールオブジェクト格納
- Dim strMessage As String 'メール本文
-
- 'Outlookを起動
- Set objApp = CreateObject("Outlook.Application")
-
- '新規メール作成
- Set objMail = objApp.CreateItem(0)
-
- '本文を指定
- strMessage = "メール本文"
- strMessage = strMessage & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
- strMessage = strMessage & "※このメールはシステムから自動送信しています。" & vbCrLf
- strMessage = strMessage & ""
-
- With objMail
-
- '送信先(To、Cc、Bcc)
- .to = "送信宛先メールアドレス"
- .cc = "CC送信先メールアドレス"
- .bcc = "BCC送信先メールアドレス"
-
- '件名
- .Subject = "件名"
-
- '書式 1:テキスト形式、2:HTML形式
- .BodyFormat = 1
-
- '本文
- .Body = strMessage
-
- '添付ファイル
- .Attachments.Add "添付ファイルパス"
-
- '送信を実行
- .Send
-
- End With
-
- '後始末
- Set objMail = Nothing
- Set objApp = Nothing
-
- End Sub
17行目:メール本文を設定する
25行目:送信宛先メールアドレスを設定する
26行目:CC送信先メールアドレスを設定する
27行目:BCC送信先メールアドレスを設定する
30行目:件名を設定する
33行目:メール書式の設定をする(1:テキスト形式、2:HTML形式)
39行目:添付ファイルのファイルパスを設定する
まとめ:VBAでOutlookメール送信をマスターしよう
この記事では、VBAを使ってOutlookからメールを送信する方法について、基本的な準備から始まり、応用的なテクニック、そしてトラブルシューティングや効率化の方法まで、幅広く解説しました。
VBAをマスターすることで、日々の繰り返し作業であるメール送信業務を劇的に効率化し、より生産性の高い働き方を実現することができます。
今回ご紹介したコード例はほんの一例です。VBAをさらに深く学ぶことで、Excelのデータを活用したより高度なメール送信の自動化や、他のOfficeアプリケーションとの連携など、様々な業務効率化が可能になります。
ぜひ、この記事を参考に、VBAによるOutlookメール送信をあなたの業務に取り入れてみてください。
最初は簡単なコードから試してみて、徐々に複雑な処理に挑戦していくのがおすすめです。
VBAの可能性は無限大です。あなたのアイデア次第で、さらに便利な自動化ツールを作成できるでしょう。
定期的に自動でメール送信したい方は以下のリンクで定期自動実行方法を紹介していますので、ご覧ください。
→ExcelVBA(マクロ)定期自動実行方法【batファイル VBScriptファイル タスクスケジューラ】
→AccessVBA定期自動実行方法【batファイル vbsファイル タスクスケジューラ】
もし、GmailやYahooメールで自動送信したい場合は以下のリンクで紹介していますのでこちらを確認ください。
→VBAでメーラーなしで自動メール送信する方法
もし、VBA処理時にエラーになった際にエラーメール送信したい場合は以下のリンクで紹介していますのでこちらを確認ください。
→【VBA】定期自動起動処理のエラー対応処理(処理結果メール送信)


最近のコメント