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

VBA Email mit Anhang als PDF

Forumthread: VBA Email mit Anhang als PDF

VBA Email mit Anhang als PDF
18.12.2020 10:31:48
Marko
Hallo,
ein ein funktionierendes Makro zu Erzeugung einer Email mit PDF Anhang habe ich erstellt.
Hierzu habe ich folgende Frage:
Die PDF Datei, wird logischer Weise mit dem ActiveSheet Name benannt ("Ausw1").
Besteht die Möglichkeit, die PDF Datei mit dem Namen aus der Zelle M1 im ActiveSheet zu benennen?
Wenn ja, wie geht das? Vielen Dank für Eure Hilfe...

Sub Grafik8_Klicken()
msg = MsgBox(Sheets("Tabelle1").Range("F6").Value, vbYesNo, "Microsoft Outlook")
If msg = vbYes Then
Dim app   As Object
Dim file  As String
Dim isNew As Boolean
file = ActiveSheet.Name & ".pdf" 'statt ActiveSheet Name soll der Name aus ActiveSheet Zelle  _
_
_
M1 als Name des PDF erzeugt werden
ActiveSheet.Range("A1:G105").ExportAsFixedFormat xlTypePDF, Environ("TEMP") & "\" & file
On Error Resume Next
Set app = GetObject(, "Outlook.Application")
If app Is Nothing Then
Set app = CreateObject("Outlook.Application")
isNew = True
End If
With app.CreateItem(0)
.To = Sheets("Tabelle1").Range("F4").Value
.CC = ""
.BCC = ""
.Subject = Sheets("Tabelle1").Range("F7").Value
.Body = "Hallo " & Sheets("Tabelle1").Range("F3").Value & "," & vbCrLf & vbCrLf _
& "mit dieser Mail erhalten Sie die Übersicht Ihres aktuellen Konzentrations-Bonus ( _
_
_
" _
& Sheets("Tabelle1").Range("F8").Value & ")." & vbCrLf & vbCrLf _
& "Haben Sie Fragen? Rufen Sie mich bitte an. "
.Attachments.Add Environ("TEMP") & "\" & file
.ReadReceiptRequested = True 'Lesebestätigung ein
.Display 'Email anzeigen
End With
If isNew Then app.Quit
Else
MsgBox "Keine E-Mail erstellt!", vbOKOnly, "Microsoft Outlook"
End If
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Email mit Anhang als PDF
18.12.2020 10:43:51
Nepumuk
Hallo Marko,
einfach so:
file = Range("M1").Text & ".pdf"

Gruß
Nepumuk
VBA Email mit Anhang als PDF
18.12.2020 10:54:07
Marko
Hallo Nepumuk,
vielen Dank dafür.
In dieser Zeile des Makros wird nun der "Laufzeitfehler '-2147024773 (8007007b)': Dokument wurde nicht gespeichert." angezeigt:
ActiveSheet.Range("A1:G105").ExportAsFixedFormat xlTypePDF, Environ("TEMP") & "\" & file
So habe ich Deine Lösung im Makro umgesetzt:
file = Range("M1").Text & ".pdf"
ActiveSheet.Range("A1:G105").ExportAsFixedFormat xlTypePDF, Environ("TEMP") & "\" & file
Hast Du eine Idee, wodurch der Laufzeitfehler entsteht?
Anzeige
AW: VBA Email mit Anhang als PDF
18.12.2020 10:56:05
Nepumuk
Hallo Marko,
was steht den in M1 der aktiven Tabelle?
Gruß
Nepumuk
VBA Email mit Anhang als PDF
18.12.2020 11:01:09
Marko
Aktive Tabelle (Ausw1) M1: =Tabelle1!F5
In Tabelle1 F5 =VERKETTEN(B4;"_";F7) als ausformulierter Text: 29635_KoBi Übersicht: Mai 2020
AW: VBA Email mit Anhang als PDF
18.12.2020 11:04:55
Nepumuk
Hallo Marko,
der Doppelpunkt ist im Dateinamen verboten. Durch welches Zeichen soll ich ihn ersetzen?
Gruß
Nepumuk
Anzeige
VBA Email mit Anhang als PDF
18.12.2020 12:03:54
Marko
Halo Nepumuk,
ich habe den Doppelpunkt gegen ein Leerzeichen ersetzt und...funktioniert.
Vielen Dank für Deine Hilfe.
AW: VBA Email mit Anhang als PDF
18.12.2020 11:08:21
volti
Vielen Dank Marko,
dass Du zu diesem Thread eine Antwort gegeben hast.....
https://www.herber.de/forum/messages/1800414.html
Wie Hajo schon immer schreibt, man schreibt hier oft für den Papierkorb...
Gruß Karl-Heinz
Anzeige
;
Anzeige

Infobox / Tutorial

VBA Email mit Anhang als PDF benennen


Schritt-für-Schritt-Anleitung

Um eine PDF-Datei mit dem Namen einer Zelle in Excel zu benennen und diese als Anhang in einer E-Mail zu versenden, folge diesen Schritten:

  1. Öffne das Visual Basic for Applications (VBA) Editor in Excel mit ALT + F11.

  2. Füge ein neues Modul hinzu über Einfügen > Modul.

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

    Sub Grafik8_Klicken()
       msg = MsgBox(Sheets("Tabelle1").Range("F6").Value, vbYesNo, "Microsoft Outlook")
       If msg = vbYes Then
           Dim app   As Object
           Dim file  As String
           Dim isNew As Boolean
           file = Range("M1").Text & ".pdf" 'Name aus Zelle M1 wird verwendet
           ActiveSheet.Range("A1:G105").ExportAsFixedFormat xlTypePDF, Environ("TEMP") & "\" & file
           On Error Resume Next
           Set app = GetObject(, "Outlook.Application")
           If app Is Nothing Then
               Set app = CreateObject("Outlook.Application")
               isNew = True
           End If
           With app.CreateItem(0)
               .To = Sheets("Tabelle1").Range("F4").Value
               .CC = ""
               .BCC = ""
               .Subject = Sheets("Tabelle1").Range("F7").Value
               .Body = "Hallo " & Sheets("Tabelle1").Range("F3").Value & "," & vbCrLf & vbCrLf & _
                        "mit dieser Mail erhalten Sie die Übersicht Ihres aktuellen Konzentrations-Bonus (" & _
                        Sheets("Tabelle1").Range("F8").Value & ")." & vbCrLf & vbCrLf & _
                        "Haben Sie Fragen? Rufen Sie mich bitte an."
               .Attachments.Add Environ("TEMP") & "\" & file
               .ReadReceiptRequested = True 'Lesebestätigung ein
               .Display 'E-Mail anzeigen
           End With
           If isNew Then app.Quit
       Else
           MsgBox "Keine E-Mail erstellt!", vbOKOnly, "Microsoft Outlook"
       End If
    End Sub
  4. Stelle sicher, dass in der Zelle M1 der gewünschte Dateiname steht. Achte darauf, dass keine verbotenen Zeichen wie Doppelpunkt (:) enthalten sind.

  5. Führe das Makro aus, indem du es im VBA-Editor startest oder eine Schaltfläche in Excel erstellst.


Häufige Fehler und Lösungen

  • Laufzeitfehler '-2147024773 (8007007b)': Dokument wurde nicht gespeichert.

    • Überprüfe, ob in der Zelle M1 verbotene Zeichen wie Doppelpunkt (:) enthalten sind. Ersetze sie durch erlaubte Zeichen, z.B. ein Leerzeichen.
  • E-Mail wird nicht erstellt.

    • Stelle sicher, dass die Outlook-Anwendung installiert und konfiguriert ist.

Alternative Methoden

Falls du kein VBA verwenden möchtest, könntest du auch die manuelle Methode verwenden:

  1. Speichere die Tabelle als PDF über Datei > Speichern unter.
  2. Wähle den gewünschten Namen aus der Zelle M1.
  3. Sende die E-Mail manuell und füge die PDF-Datei als Anhang hinzu.

Praktische Beispiele

Angenommen, du hast in Zelle M1 den Text "29635_KoBi Übersicht_Mai_2020", dann wird die PDF-Datei automatisch als "29635_KoBi Übersicht_Mai_2020.pdf" gespeichert. Vermeide jedoch Zeichen wie :, \, ?, etc., da diese in Dateinamen nicht erlaubt sind.


Tipps für Profis

  • Nutze Replace in VBA, um unerwünschte Zeichen automatisch zu entfernen:

    file = Replace(Range("M1").Text, ":", " ") & ".pdf"
  • Erstelle eine Funktion, die prüft, ob der Dateiname gültig ist, bevor du die PDF speicherst.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Dateiname keine verbotenen Zeichen enthält? Du kannst eine Funktion erstellen, die den Dateinamen überprüft und unerwünschte Zeichen ersetzt.

2. Funktioniert dieses Makro in allen Excel-Versionen? Das Makro sollte in Excel 2010 und späteren Versionen funktionieren, solange Microsoft Outlook installiert ist.

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