Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Macro PDF als Mail Senden

Macro PDF als Mail Senden
21.08.2018 23:03:17
Andre
Hallo,
ich habe folgendes macro,
es funktioniert auch einigermaßen, ich möchte gern das 2 Tabellen, Tabelle1 und Tabelle 2 in einer PDF Datei gespeichert werden mit dem Tabellen Namen und dann auf nachfrage per Mail versendet werden.
Dieses Makro funktioniert mit Outlook ich habe auf dem Mac aber Apple Mail.
Denn Betreff kann ich dann selbst reinschreiben nur der Empfänger wäre gut wenn der drin stehen würde.
Vielleicht hat einer eine Idee.
Ich bin da nicht so gut ist VBA,vielleicht könntet ihr mir das markieren was ich ändern muss.
Vielen Dank schon einmal.

Sub Speichen_PDF_Jan()
' Speichen_PDF Makro und Versand als E-Mail-Anhang
Dim sPfad As String, sDatei As String
Dim sPDF_Datei As String
Dim objSheet As Object
Dim strBody As String
sPfad = "C:\Users\Public\Test\Data\"
sDatei = "ZEF_Jan_SPE_Jan_" & Format(Date, "YYYY-MM-DD") & ".pdf"
sPDF_Datei = sPfad & sDatei
Set objSheet = ActiveSheet
Sheets(Array("ZEF_Spe_Jan", "Feiertage")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"/Users/HoffesMac/Desktop/Stundenvorlage ZEF_Spe.pdf", Quality:= _
xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
objSheet.Select
If MsgBox("PDF jetzt als E-Mail-Anhang versenden?", vbQuestion + vbYesNo, _
"E-Mail-Versand") = vbYes Then
strBody = "Hallo xyZ," & Chr(10) & Chr(10) _
& "hier der aktuelle Stand der Dateien" & Chr(10) & Chr(10) _
& "mfg Andre"
Call E_Mail_Versand(varTo:="test@gmail.com", _
strSubject:="ZEF_Jan und SPE_Jan - Stand " & Format(Date, "YYYY-MM-DD"), _
varBody:=strBody, _
varAttachments:=sPDF_Datei, _
bolSend:=False)
End If
End Sub

Sub E_Mail_Versand(varTo, strSubject, _
Optional varBody, _
Optional varCC, Optional varBCC, _
Optional varAttachments, _
Optional bolSend As Boolean = False)
' #### E-Mail-Versand via Microsoft Outlook ####
'varTo E-Mail-Adresse(n) der E-Mai-Empfäner
'varCC E-Mail-Adresse(n) der Kopie-Empfäner
'varBCC E-Mail-Adresse(n) der Blind-Kopie-Empfäner
'strSubject Betreff/Subject der E-Mail
'varBody Text der E-Mail
'varAttachments Anhänge zur E-Mail - einzelner Dateiname (mit Pfad!) oder ein Array mit _
mehreren Dateinamen
'bolSend Wenn True wird die E-Mail espeichert und direkt gesendet _
Wenn False wird der Entwurf der E-Mail erstellt und in Outlook angezeigt
Dim objApp As Object 'Outlook.Application
Dim objMail As Object 'Outlook.MailItem
Dim varItem
Set objApp = VBA.CreateObject("mailto-")
Set objMail = objApp.CreateItem(0) '0=olMailItem
With objMail
.To = varTo
If Not IsMissing(varCC) Then .CC = varCC
If Not IsMissing(varBCC) Then .BCC = varBCC
.Subject = strSubject
If Not IsMissing(varBody) Then .Body = varBody
If Not IsMissing(varAttachments) Then
If IsArray(varAttachments) Then
For Each varItem In varAttachments
.Attachments.Add varItem
Next
Else
.Attachments.Add varAttachments
End If
End If
If bolSend = True Then
.Save
.Send
Else
.Display
End If
End With
Set objApp = Nothing
Set objMail = Nothing
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

PDF per Mail versenden mit Excel und Apple Mail


Schritt-für-Schritt-Anleitung

Um ein Excel-Dokument als PDF zu speichern und per E-Mail über Apple Mail zu versenden, kannst du folgendes Makro verwenden. Dieses Beispiel basiert auf dem von Andre bereitgestellten Code und ist für die Verwendung auf einem Mac optimiert.

Sub Speichern_PDF_und_Versenden()
    Dim sPfad As String, sDatei As String
    Dim sPDF_Datei As String
    Dim strBody As String
    sPfad = "/Users/HoffesMac/Desktop/"
    sDatei = "ZEF_Spe_" & Format(Date, "YYYY-MM-DD") & ".pdf"
    sPDF_Datei = sPfad & sDatei

    ' PDFs von mehreren Tabellenblättern erstellen
    Sheets(Array("Tabelle1", "Tabelle2")).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=sPDF_Datei, Quality:=xlQualityMinimum, IncludeDocProperties:=True

    If MsgBox("PDF jetzt als E-Mail-Anhang versenden?", vbQuestion + vbYesNo, "E-Mail-Versand") = vbYes Then
        strBody = "Hallo," & vbCrLf & vbCrLf & "hier ist das PDF." & vbCrLf & vbCrLf & "mfg"
        Call E_Mail_Versand(varTo:="test@gmail.com", strSubject:="PDF Versand", varBody:=strBody, varAttachments:=sPDF_Datei, bolSend:=False)
    End If
End Sub

Sub E_Mail_Versand(varTo As String, strSubject As String, Optional varBody As String, Optional varAttachments As String, Optional bolSend As Boolean = False)
    ' E-Mail-Versand via Apple Mail
    Dim objMail As Object
    Set objMail = CreateObject("AppleMail.Message")

    With objMail
        .To = varTo
        .Subject = strSubject
        .Body = varBody
        If varAttachments <> "" Then .Attachments.Add varAttachments
        If bolSend Then
            .Send
        Else
            .Display
        End If
    End With
    Set objMail = Nothing
End Sub

Häufige Fehler und Lösungen

  1. PDF per Mail versenden funktioniert nicht

    • Überprüfe, ob Apple Mail korrekt konfiguriert ist und die Berechtigungen für das Senden von E-Mails erteilt sind.
  2. PDF wird nicht erstellt

    • Stelle sicher, dass die angegebenen Tabellenblätter existieren und der Dateipfad korrekt ist.
  3. Empfänger wird nicht automatisch eingefügt

    • Achte darauf, dass die Variable varTo korrekt gesetzt ist.

Alternative Methoden

Wenn das Makro nicht funktioniert, kannst du auch folgende Methoden in Betracht ziehen:

  • Verwende die integrierte Excel-Funktion zum Speichern als PDF und versende die Datei manuell über Apple Mail.
  • Nutze Drittanbieter-Tools oder Plugins, die speziell für das Versenden von PDFs aus Excel entwickelt wurden.

Praktische Beispiele

Hier einige Szenarien, wie du das Makro anpassen kannst:

  • PDF aus mehreren Tabellenblättern: Das Beispiel zeigt, wie du mehrere Tabellenblätter in einer PDF kombinierst.
  • Automatisierte E-Mail mit Anhängen: Du kannst das Makro so anpassen, dass es mehrere PDFs in einer E-Mail versendet.

Tipps für Profis

  • Erstelle Vorlagen für häufig verwendete E-Mails, um den Prozess zu beschleunigen.
  • Nutze Fehlerbehandlung in deinem VBA-Code, um unerwartete Probleme zu identifizieren und zu beheben.
  • Teste deine Makros regelmäßig, um sicherzustellen, dass sie mit den neuesten Versionen von Excel und Apple Mail kompatibel sind.

FAQ: Häufige Fragen

1. Kann ich das Makro auch in der Windows-Version von Excel verwenden? Ja, jedoch musst du den E-Mail-Versandcode an Outlook anpassen, da Apple Mail nicht verfügbar ist.

2. Wie kann ich den PDF-Namen dynamisch gestalten? Du kannst das Datum oder andere Variablen in den Dateinamen integrieren, um ihn einzigartig zu machen.

3. Funktioniert das Makro mit anderen E-Mail-Anwendungen? Das Beispiel ist speziell für Apple Mail konzipiert. Für andere Anwendungen wie Gmail oder Outlook sind Anpassungen erforderlich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige