簡體   English   中英

使用VBA從Excel列表發送大量電子郵件

[英]Sending mass emails from Excel list using VBA

我正在嘗試使用Excel中的VBA腳本自動執行手動過程。 我有一個電子表格,其中包含4個列表:電子郵件地址,主題,消息,簽名。 我是VBA的新手,想按一個命令按鈕,該按鈕將自動為列表創建Outlook電子郵件。

在下面的示例中,我也列出了3個人,我也想通過單擊按鈕3發送電子郵件,我也希望這些電子郵件放在草稿中,並且不會自動發送,因為需要事先檢查。

在此輸入圖像描述

下面是我的代碼

在此輸入圖像描述

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

任何幫助或工作示例將非常有幫助。 謝謝

用戶D,我想說先使用With語句以提高速度和可讀性。 然后,有一個Save方法將在當前NameSpace中保存為草稿(您默認電子郵件帳戶的Draft文件夾-因為您的客戶端上可能有多個電子郵件帳戶,並且每個帳戶都被視為自己的NameSpace)。 如果使用.Send方法,則使用.Display方法時,它也會發送,但不會發送,但會在屏幕上彈出(並在Taskmgr中顯示為另一個Task)。

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.ColumnsFind方法。 這樣一來,您可以說,在A列中找到其中有“ to”的單元格,然后可以從那里向下進行迭代。 因此,假設您調整了列,則可以捕獲該列,並且無需調整代碼。

讓我們知道這是否滿足您的需求,或者我們可以提供的其他指導。

丹尼,

ExcelVBADude

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM