PDA

View Full Version : [SOLVED] Help With Macro to Attach Multiple Items To Outlook



mjgcancio
09-30-2016, 04:02 AM
Hello all.
I'm a new user and a novice/intermediate user of VBA (by the way, I use Excel 2013) and I'm automating an excel spreadsheet in which I need to create an email and send/attach multiple files in Outlook.
The part of the email creation is done but I don't seem to be able to attach multiple files to it. I've tried several codes for it but still haven't found one that worked (or one I could make it work :(). Browsing the web, I found this code and thought that maybe it do the work, but I don't have the knowledge for it.
But is there a way of using a code to attach the files we choose, replacing the msgBox code?

The code I found is:


Sub Main()

'Declare a variable as a FileDialog object.
Dim fd As FileDialog
'Create a FileDialog object as a File Picker dialog box.
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'Declare a variable to contain the path
'of each selected item. Even though the path is a String,
'the variable must be a Variant because For Each...Next
'routines only work with Variants and Objects.
Dim vrtSelectedItem As Variant
'Use a With...End With block to reference the FileDialog object.
With fd
'Use the Show method to display the File Picker dialog box and return the user's action.
'The user pressed the action button.
If .Show = -1 Then
'Step through each string in the FileDialogSelectedItems collection.
For Each vrtSelectedItem In .SelectedItems
'vrtSelectedItem is a String that contains the path of each selected item.
'You can use any file I/O functions that you want to work with this path.
'This example simply displays the path in a message box.
MsgBox ("The files are: ") & vrtSelectedItem
Next vrtSelectedItem
'The user pressed Cancel.
Else
End If
End With
'Set the object variable to Nothing.
Set fd = Nothing

End Sub

Do you have any thoughts or ideas, please?

mancubus
09-30-2016, 04:59 AM
welcome to the forum.

please take time to read the forum rules: http://www.vbaexpress.com/forum/faq.php

use code tags (see my signature)
post your workbook (see my signature) where necessary

these will help helpers on forums to understand your requirement and post a possible solution. when posting a file here replace your sensitive data with fake data.

enjoy VBAX



ps:
you can edit your messages in 5 hours after posting them.
so you still have time to insert the code tags and upload a sample file.

mancubus
09-30-2016, 05:18 AM
Sub vbax_57311_send_mail_multi_attach()

Dim i As Long
Dim fArr

With Application.FileDialog(msoFileDialogFilePicker)
If .Show = -1 Then
ReDim fArr(1 To .SelectedItems.Count)
For i = 1 To .SelectedItems.Count
fArr(i) = .SelectedItems(i)
Next
Else
MsgBox "No files selected. Quitting..."
Exit Sub
End If
End With

With CreateObject("Outlook.Application").CreateItem(olMailItem)
.To = "RecipientEmailAddressHere"
.Subject = "SubjectHere"
.Body = "MsgBodyHere"
For i = 1 To UBound(fArr)
.Attachments.Add fArr(i)
Next
.Display
'.Send
End With

End Sub

mjgcancio
09-30-2016, 07:01 AM
Thank you so much mancubus. :friends::clap::clap:
This really worked.
I've been struggling for more than a week with this and you taught me it in less than a hour.
Best regards

mancubus
09-30-2016, 07:41 AM
you are welcome.

pls mark the thread as solved from thread tools dropdown for future references.