简体   繁体   中英

Sending mass emails with attachments using VBA

I am using a particularly code in sending mass emails across with an attachment.

Sub Mailout()


Dim Source As Document, Maillist As Document, TempDoc As Document
Dim Datarange As Range
Dim i As Long, j As Long
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
Dim mysubject As String, message As String, title As String
Set Source = ActiveDocument
' Check if Outlook is running.  If it is not, start Outlook
On Error Resume Next
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If
' Open the catalog mailmerge document
With Dialogs(wdDialogFileOpen)
.Show
End With
Set Maillist = ActiveDocument
' Show an input box asking the user for the subject to be inserted into the         email messages
message = "Enter the subject to be used for each email message."    
' Set prompt.
title = " Email Subject Input"    ' Set title.
' Display message, title
mysubject = InputBox(message, title)
' Iterate through the Sections of the Source document and the rows of the     catalog mailmerge document,
' extracting the information to be included in each email.
For j = 1 To Source.Sections.Count - 1
Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
    .Subject = mysubject
    .Body = Source.Sections(j).Range.Text
    Set Datarange = Maillist.Tables(1).Cell(j, 1).Range
    Datarange.End = Datarange.End - 1
    .To = Datarange
    For i = 2 To Maillist.Tables(1).Columns.Count
        Set Datarange = Maillist.Tables(1).Cell(j, i).Range
        Datarange.End = Datarange.End - 1
        .Attachments.Add Trim(Datarange.Text), olByValue, 1
    Next i
    .Send
End With
Set oItem = Nothing
Next j
Maillist.Close wdDoNotSaveChanges
'  Close Outlook if it was started by this macro.
If bStarted Then
oOutlookApp.Quit
End If
MsgBox Source.Sections.Count - 1 & " messages have been sent."
'Clean up
Set oOutlookApp = Nothing

End Sub

I am able to send the attachment but the formatting of the email disappears. For eg., a bold title becomes a normal line, hyperlinks disappears and it becomes a normal text phrase. Would anyone be able to point out exactly where went wrong?

Thanks! Distressed worker.

Try using .HTMLBody instead of .Body

With oItem
    .Subject = mysubject
    .HTMLBody = Source.Sections(j).Range.Text  'Change this line
    Set Datarange = Maillist.Tables(1).Cell(j, 1).Range
    Datarange.End = Datarange.End - 1
    .To = Datarange
    For i = 2 To Maillist.Tables(1).Columns.Count
        Set Datarange = Maillist.Tables(1).Cell(j, i).Range
        Datarange.End = Datarange.End - 1
        .Attachments.Add Trim(Datarange.Text), olByValue, 1
    Next i
    .Send
End With

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM