2016-05-18 4 views
4

Я написал макрос, который одним нажатием кнопки отправляет автоматическую электронную почту через Outlook. Все работает гладко, за исключением того, что я просто не могу понять, как прикрепить файл к письму. Всюду, где я смотрел, пример кода для прикрепления файлов к электронной почте для статических именованных файлов, как и в, вы отправляете одно и то же имя файла с одним и тем же путем каждый раз.Отправка вложений электронной почты от excel через VBA

Если это более удобно, кнопка, запускающая этот макрос, находится внутри рабочей книги, которую я пытаюсь прикрепить. Я не уверен, что открыть окно проводника Windows проще всего и прикрепить файл таким образом.

Dim objOutlook As Outlook.Application 
Dim objOutlookMsg As Outlook.MailItem 
Dim objOutlookRecip As Outlook.recipient 
Dim objOutlookAttach As Outlook.Attachment 
Dim WeekendingDate As Date 

With Worksheets("Macro Buttons") 
    WeekendingDate = Range("N2").Value 
End With 

Set objOutlook = CreateObject("Outlook.Application") 

Set objOutlookMsg = objOutlook.CreateItem(olMailItem) 

With objOutlookMsg 
    Set objOutlookRecip = .Recipients.Add("[email protected]") 
    objOutlookRecip.Type = olTo 
    .Subject = "Blah " & WeekendingDate 
    .Body = "blah blah blah" 

«Добавление вложений в сообщение [некоторый код]

For Each objOutlookRecip In .Recipients 
     objOutlookRecip.Resolve 
    Next 
    If DisplayMsg Then 
     .Display 
    Else 
     .Save 
    End If 
End With 
Set objOutlook = Nothing 
End Sub 

ответ

5

Вам нужен Attachments.Add код, вставленный в установку MailItem:

With objOutlookMsg 
    Set objOutlookRecip = .Recipients.Add("[email protected]") 
    objOutlookRecip.Type = olTo 
    .Subject = "Blah " & WeekendingDate 
    .Body = "blah blah blah" 
'Add attachments to the message [some code] 
    .Attachments.Add "pathToFile" 
    For Each objOutlookRecip In .Recipients 
     objOutlookRecip.Resolve 
    Next 
    If DisplayMsg Then 
     .Display 
    Else 
     .Save 
    End If 
End With 
Set objOutlook = Nothing 

В одном из моих собственных скриптов я передать коллекцию вложений в MailItem для присоединения с использованием объекта Dictionary и следующего кода:

With oMailItem 
     Set .SendUsingAccount = oOutlook.Session.Accounts.Item(iAccount) 
     .To = EmailData("To") 
     .CC = EmailData("CC") 
     .BCC = EmailData("BCC") 
     .Subject = EmailData("Subject") 
     .Body = EmailData("Body") 
     sAttachArray = Split(EmailData("AttachmentPaths"), ";") 
     For Each sAttachment In sAttachArray 
      .Attachments.Add(sAttachment) 
     Next 
     .Recipients.ResolveAll 
     .Display ' debug mode - uncomment this to see email before it's sent out 
    End With 
+0

для «пути к файлу», что я должен положить, поскольку мой путь является динамическим? имя файла меняется – Davey

+0

Какой файл вы добавляете в качестве вложения? – Dave

+0

файл excel. Я нажимаю кнопку командной строки внутри рабочей книги, которую я пытаюсь подключить. – Davey

Смежные вопросы