Clever-Excel-Forum

Normale Version: VBA Tabellenblatt als PDF generieren und per Thunderbird öffnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

leider habe ich noch nicht viel Erfahrung mit Makros bzw. VBA gesammelt und habe nun durch einige Foreneinträge und Youtube-Tutorials folgendes Makro geschrieben:


Code:
Sub PDFDatei()

   'Tabelle als PDF speichern
   ThisWorkbook.ExportAsFixedFormat xlTypePDF, _
   Filename:="C:\Users\PC\Desktop\Bestellung.pdf", _
   OpenAfterPublish:=False
   
   Application.Dialogs(xlDialogSendMail).Show
   
End Sub


Wenn ich dieses Makro ausführe, wird zwar ein PDF in dem Verzeichnis erstellt und eine Mail in Thunderbird geöffnet, allerdings hängt hier nun die Exceldatei im Anhang.
Was habe ich falsch gemacht?

Kann man dem Makro und auch noch sagen, dass er eine Emfängermailadresse eintragen soll und ein Betreff bzw. Text schreiben soll?

VG
Marco
Hallöchen,

Probier mal

Application.Dialogs(xlDialogSendMail).Show Empfänger, Betreff

Allerdings habe ich kein Thunderbird ...
Hallo, :19:

wenn du ein Tabellenblatt als PDF versenden möchtest, dann so (getestet): :21:

Code:
Option Explicit
Public Sub Main()
    Dim strResult As String
    Dim strTMP As String
    With ThisWorkbook.Worksheets("Sheet1")
        .ExportAsFixedFormat xlTypePDF, Filename:="C:\Temp\Bestellung.pdf", OpenAfterPublish:=False
    End With
    strTMP = "E:\PortableApps\ThunderbirdPortable\ThunderbirdPortable.exe "
    strResult = "-compose to='abc@hier.de',subject='Dein Betreff',body='Bodytext',attachment='File:///C:/Temp/Bestellung.pdf'"
    Shell strTMP & strResult, vbNormalFocus
End Sub

Den Tabellenblattnamen und den Pfad bzw. auch den Namen der EXE-Datei musst du anpassen (ich arbeite mit der Portablen Version). Exclamation
(15.10.2019, 08:22)Case schrieb: [ -> ]Hallo, :19:

wenn du ein Tabellenblatt als PDF versenden möchtest, dann so (getestet): :21:

Code:
Option Explicit
Public Sub Main()
    Dim strResult As String
    Dim strTMP As String
    With ThisWorkbook.Worksheets("Sheet1")
        .ExportAsFixedFormat xlTypePDF, Filename:="C:\Temp\Bestellung.pdf", OpenAfterPublish:=False
    End With
    strTMP = "E:\PortableApps\ThunderbirdPortable\ThunderbirdPortable.exe "
    strResult = "-compose to='abc@hier.de',subject='Dein Betreff',body='Bodytext',attachment='File:///C:/Temp/Bestellung.pdf'"
    Shell strTMP & strResult, vbNormalFocus
End Sub

Den Tabellenblattnamen und den Pfad bzw. auch den Namen der EXE-Datei musst du anpassen (ich arbeite mit der Portablen Version). Exclamation

Hallo Case,

perfekt das funktioniert!
Jetzt habe ich Blut geleckt und mich interessiert, ob der Body auch mehrzeilig eingefügt werden kann?

Beispiel:
Sehr geehrte Damen und Herren,

anbei erhalten Sie die aktuelle Bestellung.

Mit freundlichen Grüßen

Außerdem steht die Kundennummer immer in Zelle D7 und der Firmenname in E10.
Kann man den Betreff auch noch automatisieren?

Beispiel:
Bestellung Kundennummer(D7) Firmenname(E10)

VG
Marco
(15.10.2019, 10:28)marcrob schrieb: [ -> ]Hallo Case,

perfekt das funktioniert!
Jetzt habe ich Blut geleckt und mich interessiert, ob der Body auch mehrzeilig eingefügt werden kann?

Beispiel:
Sehr geehrte Damen und Herren,

anbei erhalten Sie die aktuelle Bestellung.

Mit freundlichen Grüßen

Außerdem steht die Kundennummer immer in Zelle D7 und der Firmenname in E10.
Kann man den Betreff auch noch automatisieren?

Beispiel:
Bestellung Kundennummer(D7) Firmenname(E10)

VG
Marco

Kann man vielleicht auch noch den Dateinamen der gespeicherten Datei variabel gestalten?
Bestellung Kundennummer(D7) Firmenname(E10)

VG Marco
Hallo Marco, :19:

bitte zitiere nicht immer den ganzen vorhergehenden Beitrag. :21:

Dann so (getestet): :17:

Code:
Option Explicit
Public Sub Main()
    Dim strResult As String
    Dim strFile As String
    Dim strPath As String
    strPath = "C:\Temp\"
    strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
    With ThisWorkbook.Worksheets("Sheet1")
        strFile = .Range("D7").Value & "_" & .Range("E10").Value & ".pdf"
        .ExportAsFixedFormat xlTypePDF, Filename:=strPath & strFile, OpenAfterPublish:=False
        strResult = "E:\PortableApps\ThunderbirdPortable\ThunderbirdPortable.exe -compose "
        strResult = strResult & " to='abc@hier.de'"
        strResult = strResult & ",subject='" & .Range("D7").Value & " " & .Range("E10").Value & "'"
        strResult = strResult & ",body='" & "Sehr geehrte Damen und Herren," & "<br>" & "<br>" & "die aktuelle Bestellungs im Anhang!" _
            & "<br>" & "<br>" & "Mit freundlichem Gruß" & "<br>" & "<br>" & "Der Chef" & "'"
        strResult = strResult & ",attachment='File:///" & strPath & strFile & "'"
    End With
    Shell strResult, vbNormalFocus
End Sub

Auch hier gilt wieder - Anpassungen nicht vergessen!
Zitat:bitte zitiere nicht immer den ganzen vorhergehenden Beitrag.

Alles klar!

Vielen Dank Case!
Das funktioniert genau so wie ich es mir vorgestellt habe  :19: