Отправлять конкретные письма на основе значений ячеек в Excel 2016?
Существует ли более эффективный способ отправки напоминаний по электронной почте пользователю на основе часто меняющихся значений ячеек? Вот код того, над чем я работаю, чтобы вы, ребята, могли понять контекст вопроса.
'This is the main function
Sub notify()
Dim rng As Range
For Each rng In Range("F3:F14")
If (rng.Value = 1) Then
Call mymacro
End If
Next rng
End Sub
-----------------------------------------------------------------------
'This is the function that sends an email when called by the main function
Private Sub mymacro()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2"
On Error Resume Next
With xOutMail
.To = "email address"
.CC = ""
.BCC = ""
.Subject = "test succeeded"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Объяснение:
Оба кода выше находятся в том же модуле моего листа. Код работал абсолютно нормально, чтобы отправить электронное письмо (через Outlook) пользователю. Например, если F3 и F7 оцениваются как true, пользователю будет отправлено два электронных письма.
Теперь возникает проблема: как я могу отредактировать свой код, чтобы в случае возникновения одинаковой ситуации (F3 и F7 оцениваются как true), два электронных письма, отправленные пользователю, будут указывать, какая ячейка оценивается как true. Другими словами, каждое отправленное электронное письмо будет отличаться, указав, какая конкретная ячейка была оценена как истинная.
Кроме того, сможет ли код быть перезапущен, если данные внутри ячейки ("F3:F14") обновлены?
Лично у меня нет опыта работы с VBA, поэтому было бы неплохо, если бы вы, ребята, могли объяснить это в терминах непрофессионала. Спасибо! Действительно ценю это!:)
1 ответ
Учитывая, что об этом спросили 2 года назад, я уверен, что вы либо решили проблему, либо пошли дальше. Но это вошло в верхнюю часть списка без ответа, так что... здесь-вперед!
Чтобы ответить на первый вопрос, есть ли более эффективный способ? Часть, которой вы поделились, кажется, будет запущена вручную, то есть программа не запустится, если вы не выполните действие. Я бы попытался автоматизировать эту задачу с помощью процесса, управляемого событиями. Это может быть сделано множеством различных способов, и мне нужно знать больше о вашем рабочем процессе, чтобы получить какую-либо значительную эффективность.
И второй вопрос, об изменении адреса электронной почты. Виды открытого вопроса с учетом текущего состояния кода. Краткое простое объяснение состоит в том, чтобы сохранить значение ячеек в переменной или двух, а затем использовать эту переменную в своем электронном письме.
Например, если у вас была переменная с ужасным именем variableX, и эта переменная содержала диапазон F3, тогда ваше электронное письмо могло бы использовать variableX.
Простое изменение, чтобы добавить информацию:
,Subject = "The cell at " & variableX.address & " is " & variableX. value & " test succeeded"