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

Forumthread: Auswahl als Pdf speichern und per mail senden

Auswahl als Pdf speichern und per mail senden
15.10.2019 16:15:34
Roman
Hallo kann mir jemand weiterhelfen
Ich müsste in einer Tabelle "Bestellung" den Bereich "B4:G151" als PDF speichern mittel CommandButton.
Der Name sollte vordefiniert sein mit Datum "Bestellung_dd.mm.yyyy"
der Pfad unter dem gespeichert wird jedoch Frei wählbar.
Dann benötige ich noch einen Code mit dem der Selbe Auswahl bereich per E-Mail an eine vordefinierte Adresse gesendet wird, mit dem Betreff "Bestellung_dd.mm.yyyy"
wenn sich das ganze zu einem Button verknüpfen lässt umso besser :)
ansonsten arbeite ich mit zwei verschiedenen
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
1. Teil - als PDF speichern
16.10.2019 07:34:12
Pierre
Hallo Roman,
zum ersten Teil:
Ich nehme an, dass du mit dem Datum immer das Tagesdatum meinst?
Und da du den Pfad nicht vorgeben willst, unter dem die PDF gespeichert werden soll, kannst du auch einfach die Datei über VBA öffnen lassen.
Folgenden Code als Modul speichern und dieses dann mit der Schaltfläche verknüpfen.
Sub Bereich_speichern()
Dim Datei As String
Datei = "Bestellung_" & Format(Date, "DD.MM.YYYY") & ".pdf"
ActiveSheet.Range("B4:G151").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Datei, Quality: _
=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub
Gruß Pierre
PS: Ich lasse offen, da ich erstmal nur Teil 1 bearbeitet habe.
Anzeige
so viel zu offen :D (owT)
16.10.2019 07:35:27
Pierre
Komplettlösung(?)
16.10.2019 07:56:10
Pierre
Schneller als gedacht, leider kann ich das nicht testen, da ich kein Outlook habe (ich hoffe, du schon).
Bitte teste mal dieses Makro (komplett als Modul speichern und mit Button verknüpfen), das andere von eben bitte weg lassen!
Sub Mail_Versenden()
Dim Mailadresse  As String
Dim Betreff As String
Dim Datei As String
Dim olApp As Object
olApp = CreateObject("Outlook.Application")
Datei = "Bestellung_" & Format(Date, "DD.MM.YYYY") & ".pdf"
Mailadresse = "maxmuster@musterfirma.de"                        'E-Mail Adresse anpassen
Betreff = "Bestellung vom ..."                                  'Betreff anpassen
ActiveSheet.Range("B4:G151").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Datei, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False,  _
OpenAfterPublish:=False
With olApp.CreateItem(0)
.to = Mailadresse
.Subject = Betreff
.Attachments.Add Datei
.Display
.Send
End With
olApp = Nothing
End Sub
Gruß Pierre
Anzeige
AW: Komplettlösung(?)
16.10.2019 11:40:41
Roman
Hallo Pierre
Erstmals vielen Herzlichen Dank für Deine Schnelle Antwort.
Das mit dem Speichern funktioniert soweit super. Wenn ich aber dennoch einen Speicherpfad eingeben möchte, was müsste ich für beispielsweise Speichern auf dem Desktop eingeben ?
Das mit dem Mail hängt noch ein wenig, dort bekomme ich die Fehlermeldung
Laufzeitfehler 91
Objektvaviable oder With.Blockvariable
micht festgelegt
habe die Mailadresse von max.mustermann auf meine angepasst und ebenso auch den Betreff
Anzeige
E-Mailversand offen
16.10.2019 11:57:51
Pierre
Wie gesagt, das mit der Mail kann ich leider nicht testen, habe mir den Code auch nur zusammengebastelt.
Da müsste also jemand anderes bei schauen, sorry.
Ich glaube aber, du solltest die Mailadresse des Empfängers eintragen ;-)
Du meintest ja, dass diese fix ist.
Bzgl. Speicherpfad vorgeben, habe ich das so gelöst, dass ich unter "Diese Arbeitsmappe" diesen Code einfüge:

Private Sub Workbook_Open()
ChDrive "P"                     'Laufwerk anpassen
ChDir "P:\"                     'Ordner anpassen
End Sub
Gruß Pierre
(offen weil s. Betreff)
Anzeige
AW: E-Mailversand offen
16.10.2019 16:46:40
Hajo_Zi
Hallo Pierre,
lasse den Fragesteller entscheiden ob offen.
Es ist heute nicht mehr üblich eine Rückmeldung zu geben und so ist der Beitrag über 6 Tage offen.
Das ist nur meine Meinung zu dem Thema.

AW: E-Mailversand offen
16.10.2019 17:07:39
Roman
Ich wäre Froh wenn sich jemand der Problematik annehmen könnte und eine Lösung hat.
Vielen Dank
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
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

Auswahl als PDF speichern und per E-Mail senden


Schritt-für-Schritt-Anleitung

Um einen bestimmten Bereich in Excel als PDF zu speichern und per E-Mail zu versenden, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und lade die Arbeitsmappe, die den gewünschten Bereich enthält.

  2. Öffne den Visual Basic-Editor (Alt + F11) und füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Füge den folgenden Code in das Modul ein, um den ausgewählten Bereich als PDF zu speichern:

    Sub Bereich_speichern()
        Dim Datei As String
        Datei = "Bestellung_" & Format(Date, "DD.MM.YYYY") & ".pdf"
        ActiveSheet.Range("B4:G151").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Datei, Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
    End Sub
  4. Füge den zweiten Code ein, um die E-Mail zu versenden:

    Sub Mail_Versenden()
        Dim Mailadresse As String
        Dim Betreff As String
        Dim Datei As String
        Dim olApp As Object
        Set olApp = CreateObject("Outlook.Application")
        Datei = "Bestellung_" & Format(Date, "DD.MM.YYYY") & ".pdf"
        Mailadresse = "deine.email@beispiel.com" ' E-Mail Adresse anpassen
        Betreff = "Bestellung vom " & Format(Date, "DD.MM.YYYY") ' Betreff anpassen
        ActiveSheet.Range("B4:G151").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Datei, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        With olApp.CreateItem(0)
            .To = Mailadresse
            .Subject = Betreff
            .Attachments.Add Datei
            .Display ' oder .Send, um direkt zu senden
        End With
        Set olApp = Nothing
    End Sub
  5. Verknüpfe die Makros mit einem Button:

    • Gehe zu „Entwicklertools“ > „Einfügen“ > „Button“ und ziehe ihn in deine Arbeitsmappe.
    • Wähle das entsprechende Makro aus, um es mit dem Button zu verknüpfen.

Häufige Fehler und Lösungen

  • Laufzeitfehler 91: Dieser Fehler tritt häufig auf, wenn das Outlook-Objekt nicht richtig initialisiert wurde. Stelle sicher, dass du Set anstelle von = verwendest, um das Outlook-Objekt zu erstellen.

  • Speicherpfad anpassen: Wenn du einen bestimmten Speicherort verwenden möchtest, füge den Pfad in den Code ein. Zum Beispiel:

    Datei = "C:\Users\DeinBenutzername\Desktop\Bestellung_" & Format(Date, "DD.MM.YYYY") & ".pdf"
  • E-Mail nicht gesendet: Überprüfe, ob Outlook korrekt konfiguriert ist und dass du die E-Mail-Adresse und den Betreff richtig eingegeben hast.


Alternative Methoden

Wenn du die Funktionalität ohne VBA nutzen möchtest, kannst du den Bereich auch manuell als PDF speichern:

  1. Wähle den gewünschten Bereich in Excel aus.
  2. Gehe zu „Datei“ > „Drucken“.
  3. Wähle „Microsoft Print to PDF“ als Drucker aus.
  4. Klicke auf „Drucken“ und wähle den Speicherort aus.

Um die E-Mail zu senden, kannst du die PDF-Datei manuell als Anhang in Outlook hinzufügen.


Praktische Beispiele

  • PDF aus einem markierten Bereich speichern: Die obigen Codes zeigen, wie du den Bereich „B4:G151“ speicherst. Du kannst diesen Bereich anpassen, um nur den markierten Bereich zu speichern.
  • E-Mail mit PDF-Anhang versenden: Ändere die Mailadresse und den Betreff gemäß deinen Anforderungen, um die E-Mail zu personalisieren.

Tipps für Profis

  • Verwende Fehlerbehandlung im VBA-Code, um sicherzustellen, dass dein Makro stabil läuft. Zum Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
  • Du kannst auch Batch-Prozesse erstellen, um mehrere Bereiche zu speichern und mehrere E-Mails zu versenden, indem du Schleifen in VBA verwendest.


FAQ: Häufige Fragen

1. Wie kann ich einen anderen Bereich als PDF speichern? Du kannst den Bereich in der Range-Methode anpassen, z.B. ActiveSheet.Range("A1:C10").

2. Was tun, wenn ich kein Outlook habe? In diesem Fall kannst du die PDF-Datei manuell in einem anderen E-Mail-Client anhängen und versenden, nachdem du sie gespeichert hast.

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