Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro Pdf erzeugen und als Email-Anhang in Outlook

Makro Pdf erzeugen und als Email-Anhang in Outlook
24.07.2015 16:03:44
Sebastian
Hallo zusammen,
ich habe ja nun schon mal mein Problem geschildert. Nun versuche ich es einfach nochmal. Vielleicht kann mir ja jemand helfen.
Ich möchte ein Makro schreiben, welches ermöglicht, das aktive Arbeitsblatt als Pdf zu drucken und gleichzeitig als Email-Anhang in Outlook bereitstellt. Nun bin ich soweit gekommen, dass zwar die Pdf mit dem entsprechenden Namen erstellt wird, jedoch tut sich nix mehr in Hinblick auf Outlook. Ich möchte gerne den Empfäger aus einer Zelle beziehen, sowie CC einsetzen. Der Betreff soll den Namen der Datei haben.
Optimal wäre noch als "Body" eine Art Anrede, is aber kein muß.
Im Debuggen-Modus werde ich auf den Fehler in ".Attachments.Add pdfName" hingewiesen. Leider weiß ich hier nicht weiter.
Viele Dank für eure Hilfe.
Gruß, Sebastian
Aktuell bin ich soweit:
Sub AlsPDFSpeichernundSenden()
Dim pdfName As String
Dim pdfOpenAfterPublish As Boolean
Dim olApp As Object
Rem Rückfragen, ob Datei nach dem Erstellen geöffnet werden soll
If MsgBox("Soll die PDF-Datei nach dem Erstellen angezeigt werden?", vbYesNo, "PDF anzeigen?") = _
vbYes Then pdfOpenAfterPublish = True
Rem Pfad und Name der PDF-Datei
pdfName = Range("H2") & "_" & Range("Y3") & "_" & Range("Y2") & ".pdf"
Rem PDF-Datei erstellen. Funktioniert nur in Excel 2007 oder höher, nicht in Excel 2003 oder ä _
lter
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:=pdfName, _
Quality:=xlQualityStandard, IncludeDocProperties:=False,  _
IgnorePrintAreas:=False, _
OpenAfterPublish:=IIf(pdfOpenAfterPublish, True, False)
Rem Email erstellen
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.TO = Range("AI2").Value
.CC = "max.mustermann@musterfirma.de" & "marie.mustermann@musterfirma.de"
.Subject = "Name der Datei?"
.htmlBody = "Sehr geehrte Damen und Herren,anbei mein Tagesnachweis zur weiteren  _
Verwendung."
.Attachments.Add pdfName
.Display
End With
Rem Boolean-Variable "pdfOpenAfterPublish" zurücksetzen
pdfOpenAfterPublish = False
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
  • 24.07.2015 23:32:54
    Raphael
Anzeige
hmm..
24.07.2015 23:32:54
Raphael
Hallo Sebastian,
da er dir einen Fehler im Attachments.Add anzeigt würde ich davon ausgehen, dass der Dateipfad nicht korrekt ist. Wahrscheinlich steht in den Zellen H2 etc nur wie die Datei heisst, aber keine Pfadbezeichnung wie C:\Users\Pfad\XXXX.pdf

.Subject = Range("H2") & "_" & Range("Y3") & "_" & Range("Y2") & ".pdf"
.Body = "Sehr geehrte Damen und Herren
An und für sich hast du ja schon alles soweit ich das sehe.
Gruess
Raphael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro zur PDF-Erstellung und E-Mail-Versand in Outlook


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro zu erstellen, das ein aktives Arbeitsblatt als PDF speichert und es gleichzeitig als E-Mail-Anhang in Outlook sendet, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen und wähle Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub AlsPDFSpeichernundSenden()
       Dim pdfName As String
       Dim pdfOpenAfterPublish As Boolean
       Dim olApp As Object
    
       If MsgBox("Soll die PDF-Datei nach dem Erstellen angezeigt werden?", vbYesNo, "PDF anzeigen?") = vbYes Then
           pdfOpenAfterPublish = True
       End If
    
       pdfName = Range("H2") & "_" & Range("Y3") & "_" & Range("Y2") & ".pdf"
       ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, FileName:=pdfName, _
           Quality:=xlQualityStandard, IncludeDocProperties:=False, _
           IgnorePrintAreas:=False, OpenAfterPublish:=pdfOpenAfterPublish
    
       Set olApp = CreateObject("Outlook.Application")
       With olApp.CreateItem(0)
           .To = Range("AI2").Value
           .CC = "max.mustermann@musterfirma.de; marie.mustermann@musterfirma.de"
           .Subject = "Name der Datei?"
           .htmlBody = "Sehr geehrte Damen und Herren,<br> anbei mein Tagesnachweis zur weiteren Verwendung."
           .Attachments.Add pdfName
           .Display
       End With
    End Sub
  4. Passe den Code an: Stelle sicher, dass die Zellreferenzen (z.B. Range("H2"), Range("Y3"), Range("AI2")) deinen Anforderungen entsprechen.

  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus: Drücke ALT + F8, wähle dein Makro aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler in .Attachments.Add pdfName:

    • Ursache: Der Pfad zur PDF-Datei ist möglicherweise nicht korrekt.
    • Lösung: Stelle sicher, dass die Zellen, die den Dateinamen enthalten, auch den vollständigen Pfad beinhalten (z.B. C:\Users\DeinBenutzername\Documents\Beispiel.pdf).
  • Outlook öffnet sich nicht:

    • Ursache: Outlook ist möglicherweise nicht korrekt installiert oder nicht als Standard-Mailprogramm festgelegt.
    • Lösung: Überprüfe die Outlook-Einstellungen und stelle sicher, dass es korrekt funktioniert.

Alternative Methoden

Wenn du kein Makro verwenden möchtest, kannst du folgende Methoden in Betracht ziehen:

  • Manuelle Erstellung der PDF: Nutze die Funktion Speichern unter und wähle PDF als Dateiformat.
  • E-Mail mit PDF-Anhang manuell: Erstelle die E-Mail in Outlook und füge die gespeicherte PDF-Datei als Anhang hinzu.

Praktische Beispiele

  • E-Mail mit einem Bericht als PDF: Erstelle ein Makro, das automatisch einen monatlichen Bericht als PDF speichert und an dein Team sendet.
  • Tägliche Einnahmen: Automatisiere das Speichern und Versenden deiner täglichen Einnahmen in PDF-Format an deinen Vorgesetzten.

Tipps für Profis

  • Fehlerbehandlung hinzufügen: Implementiere Fehlerbehandlungsroutinen, um Probleme beim PDF-Erstellen oder E-Mail-Versand zu erfassen.
  • Dynamische E-Mail-Adressen: Nutze Zellen, um E-Mail-Adressen dynamisch zu laden und so die Flexibilität deines Makros zu erhöhen.
  • Testen in verschiedenen Excel-Versionen: Vergewissere dich, dass dein Makro in verschiedenen Versionen von Excel (mindestens Excel 2007) funktioniert.

FAQ: Häufige Fragen

1. Kann ich das Makro auch in Excel 2003 verwenden?
Leider funktioniert die PDF-Erstellung nur in Excel 2007 oder höheren Versionen.

2. Wie kann ich die E-Mail-Adressen automatisch aus einer Liste in Excel beziehen?
Du kannst die Zellenreferenzen im Code anpassen, um die E-Mail-Adressen aus einer Liste zu lesen.

3. Ist es möglich, mehrere Anhänge zu einer E-Mail hinzuzufügen?
Ja, du kannst mehrere .Attachments.Add-Zeilen im Code hinzufügen, um mehrere Dateien anzuhängen.

4. Wie kann ich das PDF nach dem Erstellen automatisch öffnen?
Das wird über die Variable pdfOpenAfterPublish gesteuert, die du auf True setzen kannst, wenn du die PDF nach der Erstellung anzeigen lassen möchtest.

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