E-mail Merge with Attachments Source count not working

Jan 16, 2013
Reaction score
Good Day all:

I'm currently working the the de'facto mail-merge VBA from http://word.mvps.org/faqs/mailmerge/mergewithattachments.htm

However, the code is failing and I'm at a complete loss as to why (my fear is because I'm in Office 2010).

Full code is below, but the line that is failing is:

For j = 1 To Source.Sections.Count - 1

When I place a watch on "Source" it's showing the proper document location which contains my e-mail and attachment file (redacted the e-mails)

Edit(my columns aren't showing up, this is a two row, two column table, with e-mail in the left column, and the image address in the right), 1 e-mail/image per row.
(e-mail address removed)
H:\My Documents\My Pictures\caduceus-8.png
(e-mail address removed)
H:\My Documents\My Pictures\caduceus-8.png

However, Source.Sections.Count is returning a value of 1. Which means the loop effecitvely says, For J = 1 to 0, and it skips the section.

Is there something I'm issing either in my table or because it's 2010?

I really appreciate your assistance!!


___ Code ___

Sub emailmergewithattachments()
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)
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
End With
Set oItem = Nothing
Next j
Maillist.Close wdDoNotSaveChanges
' Close Outlook if it was started by this macro.
If bStarted Then
End If
MsgBox Source.Sections.Count - 1 & " messages have been sent."
'Clean up
Set oOutlookApp = Nothing
End Sub
Jan 16, 2013
Reaction score
The issue was I had to do a mail-merge in the Word Document first (so that I have all the different page sections)! Duh. Sorry for the hassle!
Last edited:

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question