Worddokument als PDF speichern und mit Outlook versenden

cesar

Stammgast
Hallo zusammen

Ich «darf/muss» erstmals in Word ein Makro programmieren.

Ich habe ein Worddokument das ich nach dem Ausfüllen als PDF speichere und versenden muss.
Mit einem Makro wandle ich das bestehende Dokument in ein PDF File um und speichere dies mit folgendem Makro:

Code:
Sub PDF_Speichern()

Windows("Test ABC.docx").Activate
Dim strDateiname As String
Dim Pfad As String
Dim strPDF As String
Pfad = "Z:\Test\Testfile\Download"
strDateiname = Format(Date, "dddd/DD/MMM/YYYY/ ") & Format(Time, "hh.mm.ss.")
strPDF = Pfad & "" & strDateiname & "pdf"
ActiveDocument.ExportAsFixedFormat OutputFileName:=strPDF, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _
IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
True, UseISO19005_1:=False

End Sub

Wie ersichtlich kann ich damit jede Sekunde ein neues File erstellen und speichern.
Das funktioniert alles zufriedenstellend. Nun möchte ich dieses PDF aber gleichzeitig via Outlook 365 versenden und hier stosse ich an meine Grenzen.
Ich kriege es nicht hin, dass ich das File als Anhang versenden kann, zumal sich der Name ja immer unterscheidet. Viele Infos in Netz drehen sich in diesem Fall um Excel und da habe ich das machen können, aber im Word funktioniert es auch nach X Versuchen nicht.

Ich möchte mit einem Makro das Worddukument in ein PDF umwandeln, das PDF mit dem Outlook versenden und das Worddokument ohne speichern wieder schliessen.

Danke für eure Hilfe
cesar
 
Zuletzt bearbeitet von einem Moderator:

weer

Stammgast
Grüezi Cesar

Ich «darf/muss» erstmals in Word ein Makro programmieren.
Caesar ist dabei, den Rubikon zu überschreiten!

Ich habe ein Makro, das bei mir macht, was Du gerne hättest. Ich arbeite allerdings mit Word/Office 2013. Ob das mit der Version 365 auch so funktioniert wie in der älteren, weiss ich nicht.

Als erstes musst Du folgendes machen:

"Da wir im Makro auch Objekte aus Outlook ansprechen, muss sichergestellt werden, dass dies VBA bekannt ist. Um dies zu überprüfen, klicken Sie (im VBA-Explorer) auf Extras/Verweise und kontrollieren dort, ob der Punkt «Microsoft Outlook 11.0 Object Library» aktiviert ist (die Nummer ist abhängig von der Outlook Version). Ist dies der Fall, können Sie loslegen. Ansonsten suchen Sie den erwähnten Punkt in der Liste und setzen den Haken." - Ich bei mir selber habe aktiviert: «Microsoft Office 15.0 Object Library». Da kenne ich mich nicht so aus.

Dieser Hinweis aus dem PCTipp stammt zwar von 2007, ist aber meines Wissens nach wie vor aktuell.
https://www.pctipp.ch/tipps-tricks/kummerkasten/office/artikel/word-datei-per-makro-versenden-36499/?forcedesktop=1

Dann kannst Du Dein Makro PDF_Speichern() ergänzen; vor "End Sub" fügst Du folgendes ein.

Code:
Dim Outlook As Object
Dim Mail As Object
Dim Att As Object

Set Outlook = GetObject(, "outlook.application")
Set Mail = Outlook.CreateItem(0)
Set Att = Mail.Attachments.Add(strPDF)  ' Mail-Anhang
Mail.To = "jemand@bluewin.ch"
Mail.Subject = Att.DisplayName    ' Betreff mit dem Namen des Anhangs
Mail.Display  ' Mail wird angezeigt, nicht direkt versandt.

Windows("Test ABC.docx").Activate
    ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges

Dieser Makro-Teil erstellt ein Email mit dem PDF als Anhang, das Du als "strPDF" kreiert hast, und schliesst "Test ABC.docx", ohne es zu speichern. - Wichtig ist: Outlook muss geöffnet sein, bevor Du das Makro startest!

In der Zeile
Mail.To = "jemand@bluewin.ch"
kannst Du die richtige Email-Adresse einsetzen oder die Zeile deaktivieren. Ebenso kannst Du "Mail.Subject" (den Betreff) ändern.

Wie gesagt: Bei mir klappt das bestens. Ich hoffe, auch bei Dir. Grüsse Niclaus
 
Zuletzt bearbeitet:

cesar

Stammgast
Hallo Niclaus

Funktioniert super, genau das was ich gesucht habe. Kann ich super einfach in mein restliches Makro einbinden.
Einmal mehr, einen herzlichen Dank an dich für die kompetente Hilfe.

Gruss
cesar
 
Oben