期日が到来したときに電子メールを送信する(Microsoft Excel)
Domenicには、E列にプロジェクトの期日を示すワークシートがあります。
彼は、条件付き書式を使用して期日がいつ(今日の日付と同じか)を示すことができることを知っていますが、本当に必要なのは、期日が到来したときに送信される電子メールです。彼は、Excelでこれを行う方法があるかどうか疑問に思います。
実際には、マクロを使用してもかまわないのであれば、これを行う方法があります。さらに、Outlookを介して電子メールを送信する必要があります。これにより、VBAは問題なく通信します。 (残念ながら、VBAを使用して他のメールクライアントに簡単に接続することはできません。)
たとえば、これはブックが開くたびに実行されるマクロです。ワークシートの各行を自動的にチェックします。具体的には、列Eの期日と列Fの「フラグ値」を入力します(このフラグ値はマクロによって設定されます。列Fに文字「S」が含まれている場合”その後、マクロは電子メールが以前に送信されたことを前提としています。)
Private Sub Workbook_Open() Dim OutApp As Object Dim OutMail As Object Dim lLastRow As Long Dim lRow As Long Dim sSendTo As String Dim sSendCC As String Dim sSendBCC As String Dim sSubject As String Dim sTemp As String Set OutApp = CreateObject("Outlook.Application") OutApp.Session.Logon ' Change the following as needed sSendTo = "[email protected]" sSendCC = "" sSendBCC = "" sSubject = "Due date reached" lLastRow = Cells(Rows.Count, 3).End(xlUp).Row For lRow = 2 To lLastRow If Cells(lRow, 6) <> "S" Then If Cells(lRow, 5) <= Date Then Set OutMail = OutApp.CreateItem(0) On Error Resume Next With OutMail .To = sSendTo If sSendCC > "" Then .CC = sSendCC If sSendBCC > "" Then .BCC = sSendBCC .Subject = sSubject sTemp = "Hello!" & vbCrLf & vbCrLf sTemp = sTemp & "The due date has been reached " sTemp = sTemp & "for this project:" & vbCrLf & vbCrLf ' Assumes project name is in column B sTemp = sTemp & " " & Cells(lRow,2) sTemp = sTemp & "Please take the appropriate" sTemp = sTemp & "action." & vbCrLf & vbCrLf sTemp = sTemp & "Thank you!" & vbCrLf .Body = sTemp ' Change the following to .Send if you want to ' send the message without reviewing first .Display End With Set OutMail = Nothing Cells(lRow, 6) = "S" Cells(lRow, 7) = "E-mail sent on: " & Now() End If End If Next lRow Set OutApp = Nothing End Sub
マクロが実行されると(ここでも、ブックが最初に開かれたとき)、ワークシートの各行がチェックされ、列Fに「S」があるかどうかが確認されます。
そうでない場合は、列Eの日付が今日の日付と等しいかどうかを確認します。そうである場合、コードは送信される電子メールメッセージ(必要に応じて変更できます)をまとめます。電子メールが表示され、必要な変更を加えた後、[送信]ボタンをクリックできます。
その時点で、列Fに「S」インジケーターを配置し、列Gに電子メールが送信された日付を配置することにより、ワークシートが更新されます。
マクロは、プロジェクトの名前が列Bにあることを前提としていることに注意してください。
この情報は、電子メールで送信されるメッセージをまとめるために使用されます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(474)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。