mike89
Goto Top

VBA Exceldatei nach Speichern Schließen automatisch versenden per Mail

Guten Tag,

Ich benötige einen Code zum Senden einer Datei nachdem ich diese gespeichert habe. Bisher ist es mir nur gelungen jemanden zu benachrichtigen per Makro. Ich möchte aber dass sich die Datei auch anhängt da es Benutzer gibt die keinen Zugriff auf die Datei haben (extern).

Vielen Dank im Voraus für die Hilfe face-smile

lg Mike89

Content-Key: 285104

Url: https://administrator.de/contentid/285104

Printed on: April 18, 2024 at 06:04 o'clock

Mitglied: 122990
122990 Oct 09, 2015 updated at 08:02:25 (UTC)
Goto Top
Moin,
Suchfunktion benutzen:
Daten aus Excel Datei per VB Script versenden.

Gruß grexit
Member: Mike89
Mike89 Oct 09, 2015 at 09:13:22 (UTC)
Goto Top
Guten Morgen,

Danke für die Info! Habe die Beiträge geprüft komme aber nicht ganz auf einen Code der genau in mein Schema passt .

Grundsätzlich geht es um Speichern unter + Sende die Datei als Anhang an folgende E-Mailadressen (inkl. Text)

Bisher kam ich nur auf folgende Lösung - hier wird allerdings lediglich Bescheid gegeben, dass die Datei aktuell ist.

Sub Speichern unter und Senden ()
ActiveWorkbook.SaveAs Filename:= _
"V:\Test.xlsm" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

Set olAppication = CreateObject("Outlook.Application")
Set objEMail = olAppication.CreateItem(olMailItem)
Application.Wait Now + TimeSerial(0, 0, 5)
With objEMail
.To = "E-Mailadresse" 'E-Mail Adresse des Empfängers eintragen'
.Subject = "Neue Auswertung!" 'der Text der in der Betreffzeile in der E-Mail stehen soll'
.Body = "Anbei die aktuelle Auswertung" 'der Text im E-Mailtext erscheinen soll'
.Display
End With
SendKeys "%s", True
SendKeys "^{ENTER}", True

Set objEMail = Nothing
End Sub
Member: colinardo
colinardo Oct 09, 2015 updated at 10:07:48 (UTC)
Goto Top
Hallo Mike89,
da hast du mehrere Möglichkeiten.

Die simpelste sieht so aus:
(Diese hat aber nur begrenzte Möglichkeiten der Anpassung, ist aber schnell geschrieben)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ActiveWorkbook.SendMail "user@domain.de", "Test"  
End Sub
Die zweite für dich vermutlich eher passende sieht so aus:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ActiveWorkbook.Save
    email "user@domain.de", "TestSubject", "Das ist mein Body", Array(ActiveWorkbook.FullName)  
End Sub

Function email(sMailto, sSubject, sBodyText, arrAttachments)
    On Error Resume Next
    Set objOutlook = GetObject("", "Outlook.Application")  
    If objOutlook Is Nothing Then
    Set objOutlook = CreateObject("Outlook.Application")  
    End If
    Set objMail = objOutlook.CreateItem(0)
    If Not objMail Is Nothing Then
        With objMail
            .To = sMailto
            .Subject = sSubject
            .Body = sBodyText
            If UBound(arrAttachments) <> -1 Then
                For i = 0 To UBound(arrAttachments)
                    .Attachments.Add arrAttachments(i)
                Next
            End If
            .Send
        End With
    End If
    Set objOutlook = Nothing
End Function
WICHTIG: Der Code gehört in den Abschnitt ThisWorkbook oder DieseArbeitsmappe, weil das BeforeClose-Event nur dort reagiert, wenn die Mappe geschlossen wird!

Grüße Uwe
Member: colinardo
colinardo Dec 30, 2015 at 19:06:11 (UTC)
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.

Guten Rutsch.