Отправлять конкретные письма на основе значений ячеек в Excel 2016?

662
Wen Yao Wen Yao

Существует ли более эффективный способ отправки напоминаний по электронной почте пользователю на основе часто меняющихся значений ячеек? Вот код того, над чем я работаю, чтобы вы, ребята, могли понять контекст вопроса.

 '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, поэтому было бы неплохо, если бы вы, ребята, могли объяснить это в терминах непрофессионала. Спасибо! Действительно ценю это! :)

2

1 ответ на вопрос

0
ProfoundlyOblivious

Учитывая, что об этом спросили 2 года назад, я уверен, что вы либо решили проблему, либо пошли дальше. Но это вошло в верхнюю часть списка без ответа, так что ... здесь-вперед!

Чтобы ответить на первый вопрос, есть ли более эффективный способ? Часть, которой вы поделились, кажется, будет запущена вручную, то есть программа не запустится, если вы не выполните действие. Я бы попытался автоматизировать эту задачу с помощью процесса, управляемого событиями. Это может быть сделано множеством разных способов, и мне нужно знать больше о вашем рабочем процессе, чтобы получить какую-либо значительную эффективность.

И второй вопрос, о смене электронной почты. Виды открытого вопроса с учетом текущего состояния кода. Краткое простое объяснение состоит в том, чтобы сохранить значение ячеек в переменной или двух, а затем использовать эту переменную в своем электронном письме.

Например, если у вас была переменная с ужасным именем variableX, и эта переменная содержала диапазон F3, тогда ваше электронное письмо могло бы использовать variableX.

Простое изменение, чтобы добавить информацию:

,Subject = "The cell at " & variableX.address & " is " & variableX. value & " test succeeded"