Это может звучать похоже на другие сообщения на StackFlow, но это не так. Мне не удалось найти тему, посвященную этой проблеме.
Каждый месяц я обращаюсь к хранителям по поводу счетов, которыми я управляю. У меня есть лист, содержащий таблицу со всеми счетами и их соответствующими хранителями в одной таблице. Я выполняю фильтрацию по столбцу E и на основе хранителя копирую и вставляю таблицу с информацией, относящейся к соответствующему хранителю, в тело электронного письма. Это утомительный процесс, поэтому я попытался создать макрос, который подготавливает и форматирует электронное письмо по своему вкусу.
Есть только одна проблема. Если вы посмотрите на logi c ниже, используемый адрес электронной почты извлекается из адреса электронной почты, расположенного в столбце F. Моя первоначальная мысль заключалась в том, чтобы отфильтровать нужного мне хранителя, и когда я нажимаю кнопку, чтобы запустить макрос, он будет искать первую ячейку в столбце F (F2) и вставлять в поле «Кому» в электронном письме. Итак, если я выберу Bank of America, он отлично работает, потому что электронное письмо находится в ячейке F2, и макрос правильно его извлекает. Проблема возникает, когда я фильтрую для другого хранителя. Я думал, что макрос будет искать в той же области и извлекать правильный адрес электронной почты для указанного c хранителя. Поскольку я фильтрую таблицу, хранитель, который я фильтрую, по существу находится в другой ячейке, поэтому он не использует то, что я отфильтровал. Например, предположим, что я фильтрую State Street в столбце E, несмотря на то, что таблица выглядит так, как будто она находится в том же месте, что и Bank of America, по сути, это F22, поэтому макрос не извлекает электронную почту для State Street. Вместо этого он извлекает адрес электронной почты Банка Америки в ячейку F2. Есть ли способ заставить макрос искать в этой области, а не в указанной c ссылке на ячейку, чтобы вытащить электронное письмо, которое я хочу отправить, таким образом ограничивая проблему, если я фильтрую таблицу?
Private Sub CommandButton1_Click()
Dim Sht As Excel.Worksheet
Set Sht = ThisWorkbook.ActiveSheet
Recip = [F2].Value & "; " ' <-- !
Dim rng As Range
Set rng = Sht.Range("A2:F26")
rng.Copy
Dim OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim OutMail As Object
Set OutMail = OutApp.CreateItem(0)
Dim vInspector As Object
Set vInspector = OutMail.GetInspector
Dim wEditor As Object
Set wEditor = vInspector.WordEditor
With OutMail
.TO = Recip
.CC = ""
.Subject = "STIF Vehicle Confirmation" & " - " & [E2].Value ' <-- !
.display
wEditor.Paragraphs(1).Range.Text = "Hello All," & Chr(11) & Chr(11) & "I hope this email finds you all doing well." & Chr(11) & Chr(11) & _
"Can you please confirm if the below STIF vehicle details are accurate for the accounts below? If the vehicle has changed, can you please confirm the new STIF vehicle name and CUSIP?" & vbCrLf
wEditor.Paragraphs(2).Range.Paste
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
введите описание изображения здесь