Отправка массовых писем из списка Excel с помощью VBA - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь автоматизировать ручной процесс, используя скрипт VBA в Excel.У меня есть таблица, которая содержит 4 списка: адреса электронной почты, тема, сообщение, подпись.Я новичок в VBA и хочу нажать командную кнопку, которая автоматически создаст электронные письма Outlook для списков.

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

enter image description here

ниже указан мой код

enter image description here

Public Sub SendOutlookEmails()
'Microsoft Outlook XX.X Object Library is required to run this code
'Variable declaration
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Dim lCounter As Long
'Set objects
Set objOutlook = Outlook.Application
'Read details from Excel sheet and send emails
For lCounter = 6 To 8
    'Create a new email item
    Set objMail = objOutlook.CreateItem(olMailItem)
    'To
    objMail.To = Sheet1.Range("A" & lCounter).Value
    'Subject
    objMail.Subject = Sheet1.Range("C" & lCounter).Value
    'Email Body
    objMail.Body = Sheet1.Range("D" & lCounter).Value
    'Send email
    'objMail.Send
    'Close the object
   'Set objMail = Nothing
   End Sub

любая помощь или рабочие примеры будут действительно полезны.Спасибо

1 Ответ

0 голосов
/ 11 марта 2019

Пользователь D, я бы сказал, сначала используйте оператор С для скорости и читабельности. Затем есть метод Сохранить , который будет сохраняться как черновик в текущем пространстве имен (папка учетных записей электронной почты по умолчанию ' Черновик ), поскольку у вас может быть несколько учетных записей электронной почты. ваш клиент, и каждый считается своим собственным пространством имен). Если вы используете метод .Send , он будет отправлять аналогично, если вы используете метод .Display , он не будет отправлять, а будет появляться на вашем экране (и будет отображаться как другая задача в Taskmgr) ,

Sub DraftEmails()

    Dim oApp As New Outlook.Application
    Dim oM As Outlook.MailItem

    Set oM = oApp.CreateItem(olMailItem)

    With oM
        .To = "someone@somewhere.somedomain"
        .Save
    End With

End Sub

Кроме того, чтобы быть более динамичным, я хотел бы рассмотреть возможность использования комбинации UsedRange.Columns и Find . Это позволило бы вам сказать, найдите в столбце A ячейку, в которой есть «to», а затем можете итерировать вниз оттуда. Так что, если вы скорректировали свои столбцы, скажем, это поймало бы и ваш код не нуждался бы в корректировке.

Сообщите нам, ответил ли он на то, что вам нужно, или на любое другое руководство, которое мы можем дать.

Danny

ExcelVBADude

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