2016-05-18 9 views
4

Ich habe ein Makro geschrieben, das auf Knopfdruck eine automatisierte E-Mail über Outlook sendet. Alles läuft reibungslos, außer dass ich einfach nicht herausfinden kann, wie man eine Datei an die E-Mail anfügt. Wo immer ich nachgesehen habe, Beispielcode für das Anhängen von Dateien an eine E-Mail ist für statische benannte Dateien, wie in, Sie senden den gleichen Dateinamen mit dem gleichen Pfad jedes Mal.Senden von E-Mail-Anhängen von Excel über VBA

Wenn es es bequemer macht, befindet sich die Schaltfläche, die dieses Makro ausführt, in der Arbeitsmappe, die ich anfügen möchte. Ich bin mir nicht sicher, ob das Öffnen eines Windows Explorer-Fensters am einfachsten ist und das Anhängen der Datei am besten wäre.

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" 

‚Anhänge hinzufügen auf die Nachricht [some code]

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

Antwort

5

Sie müssen den Attachments.Add Code in das Setup MailItem eingefügt:

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 

In einem meiner eigenen Skripte I Übergeben Sie eine Sammlung von Anhängen an das zu verknüpfende MailItem mit einem Dictionary-Objekt und dem folgenden Code:

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

für "Pfad zur Datei" was soll ich da meinen Pfad dynamisch machen? Der Dateiname ändert sich – Davey

+0

Welche Datei fügen Sie als Anlage hinzu? – Dave

+0

eine Excel-Datei. Die Befehlsschaltfläche, auf die ich klicke, befindet sich in der Arbeitsmappe, die ich anhängen möchte. – Davey

Verwandte Themen