Отправка электронного письма при наступлении срока платежа (Microsoft Excel)
У Доменика есть рабочий лист, в котором указаны сроки выполнения проектов в столбце 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
Когда макрос запускается (опять же, когда книга открывается в первый раз), он проверяет каждую строку на листе, чтобы увидеть, есть ли буква «S» в столбце F.
Если нет, то он проверяет, совпадает ли дата в столбце E с сегодняшней датой. Если это так, то код объединяет сообщение электронной почты (которое вы можете изменить по своему желанию) для отправки. Отображается электронное письмо, и вы можете нажать кнопку «Отправить» после внесения любых желаемых изменений.
В этот момент рабочий лист обновляется путем размещения индикатора «S» в столбце F и даты отправки электронного письма в столбец G.
Обратите внимание, что макрос предполагает, что имя проекта находится в столбце B.
Эта информация используется для составления сообщения, которое будет отправлено по электронной почте.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (474) применим к Microsoft Excel 2007, 2010, 2013 и 2016.