3

Есть ли простой способ получить Excel (2013) на самом деле
send an email (Outlook or Exchange)
если определенные критерии выполнены?
Например:

if A2 is between 80 and 90, send email to G2.

A2 будет результатом даты начала работы сотрудника до today's date , результат от 80 до 90 означает, что требуется 90-дневный обзор.
G2 будет иметь фактический адрес электронной почты руководителя, менеджера и т.д.
Этот процесс будет происходить автоматически, без необходимости заходить в каждую ячейку, чтобы захватить адрес электронной почты и отправить электронное письмо одно за другим.

1 ответ1

2

Эта Sub читает выбранные ячейки (столбец), к которым применяется условие, выполняет тест, если True читает электронную почту, тему, текст, отправляет электронную почту и пишет Sent в той же строке после отправки.
Работает с Outlook

Column 1    Column 2      Column 3         column 4   column 5       column 6  
80           email        Manager Name    Body Text   Employee Name  Sent or empty

Вы можете изменить ячейку (s, c+2), ячейку (s, c+4) ..., чтобы соответствовать вашим столбцам
например, G2 (столбец 2) будет ячейкой (s, c+6), если A2 - столбец 1, и переместите остальные в соответствии с вашими данными
Вы должны выбрать ячейки в столбце 1 и Sub продолжится

 Sub SendReminderMail()
        Dim s As Long, c As Long
        Dim OutLookApp As Object
        Dim OutLookMailItem As Object
        Dim strBody As String


    Set OutLookApp = CreateObject("Outlook.application")
    Set OutLookMailItem = OutLookApp.CreateItem(0)



     For Each Cell In Selection
     Cell.Select

     s = ActiveCell.Row
     c = ActiveCell.Column


       If Cells(s, c).Value > 80 And Cells(s, c).Value < 90 Then
        strBody = Cells(s, c + 3) & " " & Cells(s, c + 4)
          Set OutLookMailItem = OutLookApp.CreateItem(0)
          With OutLookMailItem

              .To = Cells(s, c + 1).Value
              .Subject = "Reminder: "
              .Body = "Dear " & Cells(s, c + 2).Value & "," & vbCrLf & vbCrLf & strBody

              .Display ' or .Send
          End With
          Cells(s, c + 5) = "Sent"
      End If

    Next Cell
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .