Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Tabellenblatt als PDF generieren und per Thunderbird öffnen
#1
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
Antworten Top
#2
Hallöchen,

Probier mal

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

Allerdings habe ich kein Thunderbird ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
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
________
Servus
Case
Antworten Top
#4
(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
Antworten Top
#5
(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
Antworten Top
#6
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!
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • marcrob
Antworten Top
#7
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:
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste