Отправка электронного письма с VBA на основе адреса из ячейки Specifi c в отфильтрованной таблице - PullRequest
0 голосов
/ 09 июля 2020

Это может звучать похоже на другие сообщения на 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

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...