The add-in runs from Word and uses Excel data. Word provides the message body. Unless you are attaching the same document to all messages created, the full path of the attachment must be included for each record in the data source. If you only have the path and can derive the name from text and other fields, add a column to your data file to provide that full path.
However I see I assisted you with a related issue in an earlier thread. It would not be too difficult to modify the code used there to loop through the records in your example, though where the invoice number comes from is anyone's guess.
Sub Mail_Attachments()
Dim OutApp As Object
Dim OutMail As Object
Dim sAttach As String
Dim iLastRow As Integer
Dim shtAddr As Worksheet
Dim xlSheet As Worksheet
Dim iRow As Long
Dim LastRow As Long
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set xlSheet = ActiveWorkbook.Sheets("Email Body")
xlSheet.Activate
LastRow = xlSheet.Range("A" & xlSheet.Rows.Count).End(-4162).Row
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set OutApp = CreateObject("Outlook.Application")
LastRow = 3 'THIS LINE IS FOR TESTING ONLY!!!
For iRow = 2 To LastRow
sAttach = xlSheet.Range("D" & iRow) & "Sealing Invoice 12534 - " & xlSheet.Range("A" & iRow) & ".pdf"
If fso.FileExists(sAttach) Then
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = xlSheet.Range("C" & iRow)
.Subject = xlSheet.Range("E" & iRow)
.Attachments.Add sAttach
.HTMLBody = "<HTML><BODY>"Please find invoice " & sAttach & " attached" _
& "<BR>" & "</HTML></BODY>"
' .Send 'or use .Display
.Display
End With
Else
MsgBox sAttach & vbCr & "Does not exist!"
End If
Next iRow
On Error GoTo 0
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub