Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Excel Tabellenblatt als PDF speichern und dem Dateinamen einen Zeitstempel hinzufügen+

1,443 views
Skip to first unread message

Hakan Kaya

unread,
May 17, 2018, 1:46:31 AM5/17/18
to
Hallo geschätzte Community

Ich habe ein kleines Projekt, für das ich auf der Suche nach einer Lösung bin.

Ich habe eine Excel-Tabellenblatt, welches ich gerne als PDF-Datei an einem vorbestimmten Ort speichern möchte.

Hierbei soll dem vorhandenen Dateinamen ein aktueller Datums- und Zeitstempel hinzugefügt werden am liebsten vorangestellt.

Die erzeugte PDF-Datei soll dann als Anhang in eine vorhandene Outlook-Vorlage eingefügt werden.

Ich habe mit dem Makrorekorder bereits ein Makro erstellt jedoch hilft mir dieser nicht beim hinzufügen des Datum- und Zeitstempels in den vorhandenen Dateinamen.

Da zudem, die Nutzbarkeit des Makrorekorders sich leider auf Excel beschränkt, lässt sich dieses Werkzeug nicht dazu verwenden, um die Aufgabe ausschließlich hiermit zu lösen.

Wäre sehr dankbar für Hilfe zur Lösung.

Thomas Kühn

unread,
May 17, 2018, 2:10:12 AM5/17/18
to
Moin moin,
>
> Hierbei soll dem vorhandenen Dateinamen ein aktueller Datums- und Zeitstempel hinzugefügt werden am liebsten vorangestellt.
>

Dim strDateiname As String
Dim strVerzeichnis As String


strFilename = Format(Now, "yyyymmdd_hhnnss") & "_test1.pdf"
strVerzeichnis = "C:\Test\"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strVerzeichnis & strFilename, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False



> Die erzeugte PDF-Datei soll dann als Anhang in eine vorhandene Outlook-Vorlage eingefügt werden.
>

Den Dateiname und Pfad hast du ja dann, also nur noch als Attachment an
das Mailobjekt hängen.

Gruß Thomas

Hakan Kaya

unread,
May 17, 2018, 2:51:52 AM5/17/18
to
Hallo Thomas

Vielen Dank, dass Du dich meiner annimmst. Ich bin was den Umgang mit VBA Code angeht eher ein Erstklässler. Könntest Du mir vielleicht auch hier einen Hinweis geben?

Was die gewünschte Funktion betrifft, so hatte ich mir vorgestellt, dass durch deinen Klick auf den Button, den ich in der Tabelle integriert habe das speichern als PDF mit Voranstellen eines Zeitstempels im vorhandenen Dateinamen sowie das einfügen als Anhang in eine vorgefertigte Outlook-Vorlage automatisch hintereinander erfolgt und ich in Outlook lediglich nur noch den Senden Button zu drücken brauche.

Wenn ich dies mit dem Makrorekorder erledigen könnte, wäre die Sache schon erledigt. Leider hat Outlook keinen Makrorekorder und somit bin ich nun auf der Suche nach einem VBA-Könner, der die mir den nötigen VBA Code schreibt.

Wenn ich zumindest schonmal auf Knopfdruck den ersten Abschnitt "speichern der Tabelle als PDF mit vorangestelltem Zeitstempel an einem bestimmten Ort" hätte, könnte ich den Rest sicherlich auch aus der Outlook-Vorlage mit ein paar weiteren Klicks erledigen.

Thomas Kühn

unread,
May 17, 2018, 3:23:00 AM5/17/18
to
Moin nochmal

> Wenn ich zumindest schonmal auf Knopfdruck den ersten Abschnitt "speichern der Tabelle als PDF mit vorangestelltem Zeitstempel an einem bestimmten Ort" hätte, könnte ich den Rest sicherlich auch aus der Outlook-Vorlage mit ein paar weiteren Klicks erledigen.

Diese Sub ErstellePDF() als Makro dem Button zuweisen:

Sub ErstellePDF()

Dim strDateiname As String
Dim strVerzeichnis As String

strFilename = Format(Now, "yyyymmdd_hhnnss") & "_test.pdf"
strVerzeichnis = "C:\Test\"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strVerzeichnis & strFilename, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

' Hier erfolgt dann der Aufruf von Outlook mit Anhängen des PDFs
Outlook_Senden (strVerzeichnis & strFilename)

End Sub

Sub Outlook_Senden(ByVal strDatei As String)
Dim objMailItem As Object, objOutlook As Object
Dim SavePath As String
Dim AWS As String
SavePath = "E:\Eigene Dateien"
Set objOutlook = CreateObject("Outlook.Application")
'Kopiert aktuelles Sheet in eine neue Mappe
'welche nur diese Tabelle enthält
ActiveSheet.Copy
'Speichert die Datei unter dem Tabellennamen und dem Namen in A1
ActiveWorkbook.SaveAs SavePath & "\" & ActiveSheet.Name & " " & ActiveSheet.Range("A1")
'Aktive Arbeitsmappe wird als mail gesendet
AWS = ActiveWorkbook.FullName
'InitializeOutlook = True
Set objMailItem = objOutlook.CreateItem(0)
With objMailItem
.To = "ma...@mail.de"
.Subject = "Betreff PDF"
.Attachments.Add strDatei
'Hier wird eine normale Text Mail erstellt
'.body = "Das ist ein Test" & vbCrLf & "Bitte ignorieren"
'Hier wird die HTML Mail erstellt
.HTMLBody = "Das ist ein Test."
'Hier wird die Mail nochmals angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'.Send
End With
objOutlook.Quit
Set objOutlook = Nothing
Set objMailItem = Nothing
End Sub

Hakan Kaya

unread,
May 17, 2018, 3:46:49 AM5/17/18
to
Hallo Thomas
Wow, was für ein Code :-)
Ich bin überrascht und begeistert zugleich. Vielen Dank für Deine Mühe. Ich werde den Code heute Abend auf der Arbeit testen und Dir gleich morgen Früh berichten. Ich habe zuhause leider kein Outlook eingerichtet und somit konnte ich nur den ersten Teil der Funktionalität testen. Sieht bisher super aus, stoppt aber an der Stelle, wo Outlook ins Spiel kommt. Werde mich auf jeden Fall morgen Früh melden. Nochmals vielen lieben Dank für die rasche Hilfe.

HR Ernst

unread,
May 17, 2018, 7:07:25 AM5/17/18
to
Am Thu, 17 May 2018 00:46:48 -0700 (PDT) schrieb Hakan Kaya:

> Am Donnerstag, 17. Mai 2018 09:23:00 UTC+2 schrieb Thomas Kühn:
[...]
> Ich bin überrascht und begeistert zugleich. Vielen Dank für Deine Mühe.
> Ich werde den Code heute Abend auf der Arbeit testen und Dir gleich
> morgen Früh berichten. Ich habe zuhause leider kein Outlook eingerichtet
> und somit konnte ich nur den ersten Teil der Funktionalität testen. Sieht
> bisher super aus, stoppt aber an der Stelle, wo Outlook ins Spiel kommt.
> Werde mich auf jeden Fall morgen Früh melden. Nochmals vielen lieben Dank
> für die rasche Hilfe.

Bist du dir sicher, dass du Makros und VBA-Codes in der Firmas anwenden
darfst?

--
Gruß

H.-R. Ernst

Claus Busch

unread,
May 17, 2018, 7:42:12 AM5/17/18
to
Hallo Thomas, hallo Hakan,

Am Thu, 17 May 2018 00:22:59 -0700 (PDT) schrieb Thomas Kühn:

> Set objMailItem = objOutlook.CreateItem(0)

da der OP den Anhang in eine Vorlage einfügen möchte, sollte obiger
Befehl geändert werden:

set ObjMailItem=CreateItemFromTemplate(Pfad der Vorlage)




Mit freundlichen Grüßen
Claus
--
Windows10
Office 2016

Hakan Kaya

unread,
May 18, 2018, 2:00:11 AM5/18/18
to
Hallo HR

Das ist eine wirklich gute Frage :-) Die Makrofunktion ist nicht gesperrt und auch das Einfügen von VBA Code wird nicht geblockt. Aber ich muss zugeben die Frage hat mich überrascht und ich danke Dir/Ihnen, dass Sie sie aufgeworfen haben. Vielen Dank. Die meisten Herausforderungen löse ich mit dem Makrorekorder und ansonsten sehe ich mir schon an, wie die Threads so ablaufen, die hier gestartet werden und wie die jeweiligen Spezialisten helfen. Diese Spezialisten, die hier sehr vielen Noobs wie mir helfen und dafür ihre kostbare Zeit einsetzen, sind gute Menschen im besten Sinne. Wenn es einen Spenden-Button gäbe, wäre ich ganz sicher bereit immer wieder mal ein paar Euros dazulassen. Vielleicht gibt es ja irgendwann mal sowas :-)

Hakan Kaya

unread,
May 18, 2018, 2:02:28 AM5/18/18
to
Hallo Claus

Vielen Dank für den Hinweis und Deine Hilfe. Ich werde versuchen, deinen Code an der richtigen Stelle einzufügen.

Hakan Kaya

unread,
May 18, 2018, 2:31:36 AM5/18/18
to
Am Donnerstag, 17. Mai 2018 09:23:00 UTC+2 schrieb Thomas Kühn:
> set ObjMailItem=CreateItemFromTemplate(Pfad der Vorlage)
> With objMailItem
> .To = "ma...@mail.de"
> .Subject = "Betreff PDF"
> .Attachments.Add strDatei
> 'Hier wird eine normale Text Mail erstellt
> '.body = "Das ist ein Test" & vbCrLf & "Bitte ignorieren"
> 'Hier wird die HTML Mail erstellt
> .HTMLBody = "Das ist ein Test."
> 'Hier wird die Mail nochmals angezeigt
> .Display
> 'Hier wird die Mail gleich in den Postausgang gelegt
> '.Send
> End With
> objOutlook.Quit
> Set objOutlook = Nothing
> Set objMailItem = Nothing
> End Sub

So hallo Thomas da bin ich wieder :-)

Ich habe den Code eingeefügt und es passiert einiges jedoch werden die Speicherorte nicht angewählt. Anstatt dessen wird die erzeugte PDF, welche in eine bereits existierende Outlook-Vorlage eingefügt werden soll, im Ordner Dokumente ab. Im Code sehe ich keine Codezeile in der ich den Speicherort anpassen könnte. Die Kopie des Tabellenblattes wird wiederum so wie gewünscht abgelegt.
Ich bin sicher, dass der Fehler an mir liegt. Deswegen habe ich Deinen Code in dem ich soweit verstanden meine Zielpfade eingetragen habe hier nochmal angehangen. Vielleicht erkennst Du auf einen Blick wo ich einen Fehler gemacht habe.


Sub ErstellePDF()

Dim strDateiname As String
Dim strVerzeichnis As String

strFilename = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"
strVerzeichnis = "\\CG07FS01\usrdaten$\KayaHa\Daten\Profildaten\Desktop\Versandte_Bereitstellungen"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFilename, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

' Hier erfolgt dann der Aufruf von Outlook mit Anhängen des PDFs
Outlook_Senden (strVerzeichnis & strFilename)

End Sub

Sub Outlook_Senden(ByVal strDatei As String)
Dim objMailItem As Object, objOutlook As Object
Dim SavePath As String
Dim AWS As String
SavePath = "\\CG07FS01\usrdaten$\KayaHa\Daten\Profildaten\Desktop\Versandte_Bereitstellungen"
Set objOutlook = CreateObject("Outlook.Application")
'Kopiert aktuelles Sheet in eine neue Mappe
'welche nur diese Tabelle enthält
ActiveSheet.Copy
'Speichert die Datei unter dem Tabellennamen und dem Namen in A1
ActiveWorkbook.SaveAs SavePath & "\" & ActiveSheet.Name & " " & ActiveSheet.Range("A49")
'Aktive Arbeitsmappe wird als mail gesendet
AWS = ActiveWorkbook.FullName
'InitializeOutlook = True
Set objMailItem = objOutlook.CreateItem(0)
With objMailItem
.To = "ma...@mail.de"
.Subject = "Betreff PDF"
.Attachments.Add strDatei
'Hier wird eine normale Text Mail erstellt
'.body = "Das ist ein Test" & vbCrLf & "Bitte ignorieren"
'Hier wird die HTML Mail erstellt
.HTMLBody = "Das ist ein Test."
'Hier wird die Mail nochmals angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'.Send
End With
objOutlook.Quit
Set objOutlook = Nothing
Set objMailItem = Nothing
End Sub

Ansonsten wird wenn ich den Debuggen Button betätige dieses hier gelb markiert

.Attachments.Add strDatei

Das Format des Zeitstempels, welches dem Dateinamen der erzeugten PDF vorangestellt sein soll, konnte ich erfolgreich anpassen. Die PDF wird wie gesagt auch erzeugt, jedoch unbeabsichtigter Weise im Ordner Dokumente abgelegt.

Der Rest (Einfügen in eine bereits existierende Outlook-Vorlage) klappt noch nicht.

Die empfohlene Änderung von Claus habe ich umgesetzt. Pfad wird angepasst.


Mit freundlichen Grüßen
Hakan

Claus Busch

unread,
May 18, 2018, 3:00:05 AM5/18/18
to
Hallo Hakan,

Am Thu, 17 May 2018 23:31:35 -0700 (PDT) schrieb Hakan Kaya:

> Ich habe den Code eingeefügt und es passiert einiges jedoch werden die Speicherorte nicht angewählt. Anstatt dessen wird die erzeugte PDF, welche in eine bereits existierende Outlook-Vorlage eingefügt werden soll, im Ordner Dokumente ab. Im Code sehe ich keine Codezeile in der ich den Speicherort anpassen könnte. Die Kopie des Tabellenblattes wird wiederum so wie gewünscht abgelegt.
> Ich bin sicher, dass der Fehler an mir liegt. Deswegen habe ich Deinen Code in dem ich soweit verstanden meine Zielpfade eingetragen habe hier nochmal angehangen. Vielleicht erkennst Du auf einen Blick wo ich einen Fehler gemacht habe.

> strFilename = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"
> strVerzeichnis = "\\CG07FS01\usrdaten$\KayaHa\Daten\Profildaten\Desktop\Versandte_Bereitstellungen"
>
> ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
> Filename:=strFilename, _
> Quality:=xlQualityStandard, _
> IncludeDocProperties:=True, _
> IgnorePrintAreas:=False, _
> OpenAfterPublish:=False

probiere stattdessen:

strDateiName = Format(Now, "dd.mm.yyyy_hh:mm") & " Bereitstellung DE (Condor).pdf"
strVerzeichnis = "\\CG07FS01\usrdaten$\KayaHa\Daten\Profildaten\Desktop\Versandte_Bereitstellungen"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strVerzeichnis & "\" & strDateiName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

> AWS = ActiveWorkbook.FullName
> 'InitializeOutlook = True
> Set objMailItem = objOutlook.CreateItem(0)
> With objMailItem
> .To = "ma...@mail.de"
> .Subject = "Betreff PDF"
> .Attachments.Add strDatei

.Attachments.Add AWS

Hakan Kaya

unread,
May 18, 2018, 3:59:01 AM5/18/18
to
Hallo Claus

wenn ich das richtig verstehe, bleibt der Rest von Thomas Code bestehen, oder?
Ist das normal, das der Teil des Codes rot wird im Editor?

Thomas Kühn

unread,
May 18, 2018, 4:16:05 AM5/18/18
to
Hallo Hakan,

> > ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
> > Filename:=strVerzeichnis & "\" & strDateiName, _
> > Quality:=xlQualityStandard, _
> > IncludeDocProperties:=True, _
> > IgnorePrintAreas:=False, _
> > OpenAfterPublish:=False
> >

Wie von Claus schon geschrieben, fehlte hier das \ zwischen Verzeichnis
und Dateiname.
Wenn Code im Editor rot angezeigt wird, ist dort irgendein Syntaxfehler.
Ab welcher Position wird der Code denn rot?

Claus Busch

unread,
May 18, 2018, 4:21:20 AM5/18/18
to
Hallo Hakan,

Am Fri, 18 May 2018 00:59:00 -0700 (PDT) schrieb Hakan Kaya:

> wenn ich das richtig verstehe, bleibt der Rest von Thomas Code bestehen, oder?
> Ist das normal, das der Teil des Codes rot wird im Editor?
>
>> AWS = ActiveWorkbook.FullName
>> 'InitializeOutlook = True
>> Set objMailItem = objOutlook.CreateItem(0)
>> With objMailItem
>> .To = "ma...@mail.de"
>> .Subject = "Betreff PDF"
>> .Attachments.Add strDatei

ich habe nur das geändert, was ich auf Anhieb gesehen habe. Der Rest
bleibt so bestehen wie er von Thomas kam.
Wenn der Text rot wird, ist ein Fehler in der Syntax. Meist geht es dann
um Zeilenumbrüche, wenn ein Befehl, der in eine Zeile gehört,
umgebrochen wurde ohne Leer und Unterstrich " _"

Hakan Kaya

unread,
May 18, 2018, 4:37:25 AM5/18/18
to
Hallo Thomas schade das es in diesem Forum keine Möglichkeit gibt, Bilder anzuhängen. Dann könnte ich Bilder anhängen. Die zeigen bekanntlich mehr lange umständliches Erklären. Es ist genau dieser Teil, der rot wird:

> AWS = ActiveWorkbook.FullName
> 'InitializeOutlook = True
> Set objMailItem = objOutlook.CreateItem(0)
> With objMailItem
> .To = "m...@mail.com"

Hakan Kaya

unread,
May 18, 2018, 4:40:03 AM5/18/18
to
Am Freitag, 18. Mai 2018 10:16:05 UTC+2 schrieb Thomas Kühn:
Vielleicht noch etwas zur Info. In meinem Outlook wird der Name des Anhangs automatisch in die Betreffzeile meiner Mailvorlage eingefügt.

Thomas Kühn

unread,
May 18, 2018, 4:43:55 AM5/18/18
to
> Vielleicht noch etwas zur Info. In meinem Outlook wird der Name des Anhangs automatisch in die Betreffzeile meiner Mailvorlage eingefügt.

Das kannst Du im
.Subject
beim objMailItem
selbst eintragen.

Hakan Kaya

unread,
May 18, 2018, 4:54:55 AM5/18/18
to
Jetzt bin ich verwirrt. Was meinst Du damit?

Thomas Kühn

unread,
May 18, 2018, 5:05:42 AM5/18/18
to
Hallo Hakan,

> Jetzt bin ich verwirrt. Was meinst Du damit?

With objMailItem
' Hier kommt die Mailadresse rein, an die du die Email
' verschicken möchtest
.To = "ma...@mail.de"

' Hier an dieser Stelle (Subject) definierst Du, was im Betreff der
' Email stehen soll.
.Subject = "Betreff PDF"
' Hier kannst Du also den Dateinamen einsetzen oder was immer
' Du im Betreff stehen haben möchtest

.Attachments.Add strDatei
.HTMLBody = "Das ist ein Test."
.Display
End With

Hakan Kaya

unread,
May 18, 2018, 5:25:38 AM5/18/18
to
Hallo Thomas vielen Dank für Deine Geduld mit mir.

In meiner existierenden Outlook-Vorlage ist ja bereits alles vorgefertigt. Die Adressaten, das Anschreiben und die Betreffzeile ist bewusst leer damit bein einfügen der Anlage der Dateiname von der Anlage automatisch in die Betreffzeile übernommen wird. Mein Outlook ist so eingerichtet, sodass es einer manuellen Beschriftung der Betreffzeile nicht bedarf - Entsprechend wird dieser Teil des Codes nicht benötigt.
Der VBA Code soll aus einem Tabellenblatt eine PDF erzeugen (wie zu Anfang beschrieben) und diese PDF Datei lediglich nur noch der existierenden Outlook-Vorlage als Anhang hinzufügen, sodass ich nur noch SENDEN klicken musss.

Claus Busch

unread,
May 18, 2018, 5:31:59 AM5/18/18
to
Hallo Hakan,

Am Fri, 18 May 2018 02:25:37 -0700 (PDT) schrieb Hakan Kaya:

> In meiner existierenden Outlook-Vorlage ist ja bereits alles vorgefertigt. Die Adressaten, das Anschreiben und die Betreffzeile ist bewusst leer damit bein einfügen der Anlage der Dateiname von der Anlage automatisch in die Betreffzeile übernommen wird. Mein Outlook ist so eingerichtet, sodass es einer manuellen Beschriftung der Betreffzeile nicht bedarf - Entsprechend wird dieser Teil des Codes nicht benötigt.
> Der VBA Code soll aus einem Tabellenblatt eine PDF erzeugen (wie zu Anfang beschrieben) und diese PDF Datei lediglich nur noch der existierenden Outlook-Vorlage als Anhang hinzufügen, sodass ich nur noch SENDEN klicken musss.

dann probiere mal:

Sub ErstellePDFUndSendeAlsAnhang()

Dim strDateiName As String
Dim strVerzeichnis As String
Dim strFN As String
Dim objOL As Object, objMail As Object

strDateiName = Format(Now, "dd.mm.yyyy_hh.nn") & _
" Bereitstellung DE (Condor).pdf"
strVerzeichnis = _
"\\CG07FS01\usrdaten$\KayaHa\Daten\Profildaten\Desktop\Versandte_Bereitstellungen\"
strFN = strVerzeichnis & strDateiName

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFN, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Set objOL = CreateObject("Outlook.Application")
Set objMail = objOL.createitemfromTemplate(Pfad_zur_Vorlage)

With objMail
.to = "ma...@mail.de" 'Wird nur benotigt, wenn die Adresse noch nicht in der Vorlage ist
.Subject = "Bereitstellung DE (Condor)" & " " _
& Format(Now, "dd.mm.yyyy_hh.nn")
.attachments.Add FN
.display
End With

End Sub

Hakan Kaya

unread,
May 18, 2018, 6:27:09 AM5/18/18
to
Hallo Claus

Diese Zeile wird beim Debuggen gelb:

Set objMail = objOL.createitemfromTemplate("C:\Users\Yanoobii\Documents\Meine Outlook Vorlagen")

Claus Busch

unread,
May 18, 2018, 7:07:58 AM5/18/18
to
Hallo Hakan,

Am Fri, 18 May 2018 03:27:08 -0700 (PDT) schrieb Hakan Kaya:

> Diese Zeile wird beim Debuggen gelb:
>
> Set objMail = objOL.createitemfromTemplate("C:\Users\Yanoobii\Documents\Meine Outlook Vorlagen")

da habe ich mich falsch ausgedrückt. Das muss der komplette Name der
Vorlage mit Pfad und Dateieindung sein.
Suche dir diese Vorlage im Explorer und klicke sie mit gedrückter
Shift-Taste rechts an => Wähle dort "Pfad kopieren" und füge dies in die
Klammer ein.

HR Ernst

unread,
May 18, 2018, 7:47:42 AM5/18/18
to
Am Fri, 18 May 2018 01:37:24 -0700 (PDT) schrieb Hakan Kaya:

> Am Freitag, 18. Mai 2018 10:16:05 UTC+2 schrieb Thomas Kühn:
[...]
>
> Hallo Thomas schade das es in diesem Forum keine Möglichkeit gibt, Bilder anzuhängen. Dann könnte ich Bilder anhängen. Die zeigen bekanntlich mehr lange umständliches Erklären. Es ist genau dieser Teil, der rot wird:
>
[...]

Anscheinend weißt du nicht, dass man für NGs Bilder irgendwo hochlädt und
hier einen entsprechenden Link dazu postet.

Hier einige Anbieter:
http://www.Materialordner.de
http://www.bilder-space.de
http://www.ImageNetz.de
http://imageshack.us/
http://www.imagehost.org/

--
Gruß

H.-R. Ernst

Hakan Kaya

unread,
May 18, 2018, 6:20:45 PM5/18/18
to
Hallo Claus

Ich habe Deine Anweisung ausgeführt. Jetzt wird ein neuer Fehler angezeigt. Laufzeitfehler 440. Die Dateianlage kann nicht hinzugefügt werden. Es wurde keine Datenquelle bereit gestellt. Beim debuggen wird folgendes gelb markiert.

.attachments.Add FN

Was inzwischen gut funktioniert ist die Erzeugung der PDF mit Dateinamenformatierung wie gewünscht und die Ablage dieser neu erzeugten Datei in einem vordefinierten Ordner. Das ist schonmal super.
Jetzt müsste noch das Einfügen der erzeugten PDF Datei in meine Outlook-Vorlage funktionieren. Dann wäre das Ziel erreicht.

With objMail
.to = "ma...@mail.de" 'Wird nur benotigt, wenn die Adresse noch nicht in der Vorlage ist
.Subject = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"
.attachments.Add FN
.display
End With

End Sub

Mit freundlichen Grüßen
Hakan

Hakan Kaya

unread,
May 18, 2018, 6:22:19 PM5/18/18
to
Am Freitag, 18. Mai 2018 13:07:58 UTC+2 schrieb Claus Busch:
Hallo Claus

So sieht der Code bei jetzigem Funktionsumfang aus.


Sub ErstellePDFUndSendeAlsAnhang()

Dim strDateiName As String
Dim strVerzeichnis As String
Dim strFN As String
Dim objOL As Object, objMail As Object

strDateiName = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"

strVerzeichnis = _
"C:\Users\Yanoobii\Documents\Speicher Versandte Bereitstellungen\\"
strFN = strVerzeichnis & strDateiName

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFN, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Set objOL = CreateObject("Outlook.Application")
Set objMail = objOL.createitemfromTemplate("C:\Users\Yanoobii\Documents\Meine Outlook Vorlagen\Anschriben Bereitstellung DE (Condor).oft")

With objMail
.to = "ma...@mail.de" 'Wird nur benotigt, wenn die Adresse noch nicht in der Vorlage ist
.Subject = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"
.attachments.Add FN
.display
End With

End Sub

Mit freundlichen Grüßen
Hakan

Hakan Kaya

unread,
May 19, 2018, 12:17:07 AM5/19/18
to
Am Freitag, 18. Mai 2018 13:07:58 UTC+2 schrieb Claus Busch:
Hall Claus ich bin`s nochmal


Ich habe Deine Anweisung ausgeführt. Jetzt wird ein neuer Fehler angezeigt. Laufzeitfehler 440. Die Dateianlage kann nicht hinzugefügt werden. Es wurde keine Datenquelle bereit gestellt. Beim debuggen wird folgendes gelb markiert.

.attachments.Add FN

Was inzwischen gut funktioniert ist die Erzeugung der PDF mit Dateinamenformatierung wie gewünscht und die Ablage dieser neu erzeugten Datei in einem vordefinierten Ordner. Das ist schonmal super.
Jetzt müsste noch das Einfügen der erzeugten PDF Datei in meine Outlook-Vorlage funktionieren. Dann wäre das Ziel erreicht.

With objMail
.to = "ma...@mail.de" 'Wird nur benotigt, wenn die Adresse noch nicht in der Vorlage ist
.Subject = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"
.attachments.Add FN
.display
End With

End Sub

Mit freundlichen Grüßen
Hakan

Hakan Kaya

unread,
May 19, 2018, 12:21:02 AM5/19/18
to
Hallo Claus

Ich habe Deine Anweisung ausgeführt. Jetzt wird ein neuer Fehler angezeigt. Laufzeitfehler 440. Die Dateianlage kann nicht hinzugefügt werden. Es wurde keine Datenquelle bereit gestellt. Beim debuggen wird folgendes gelb markiert.

.attachments.Add FN

Was inzwischen gut funktioniert ist die Erzeugung der PDF mit Dateinamenformatierung wie gewünscht und die Ablage dieser neu erzeugten Datei in einem vordefinierten Ordner. Das ist schonmal super.
Jetzt müsste noch das Einfügen der erzeugten PDF Datei in meine Outlook-Vorlage funktionieren. Dann wäre das Ziel erreicht.

Claus Busch

unread,
May 19, 2018, 2:58:40 AM5/19/18
to
Hallo Hakan,

Am Fri, 18 May 2018 21:17:05 -0700 (PDT) schrieb Hakan Kaya:

> Ich habe Deine Anweisung ausgeführt. Jetzt wird ein neuer Fehler angezeigt. Laufzeitfehler 440. Die Dateianlage kann nicht hinzugefügt werden. Es wurde keine Datenquelle bereit gestellt. Beim debuggen wird folgendes gelb markiert.
>
> .attachments.Add FN
>
> Was inzwischen gut funktioniert ist die Erzeugung der PDF mit Dateinamenformatierung wie gewünscht und die Ablage dieser neu erzeugten Datei in einem vordefinierten Ordner. Das ist schonmal super.
> Jetzt müsste noch das Einfügen der erzeugten PDF Datei in meine Outlook-Vorlage funktionieren. Dann wäre das Ziel erreicht.

Kontrolliere mal bei strVerzeichnis, ob diese beiden Backslashes am Ende
korrekt sind. Normalerweise kommt dort nur ein Backslash hin.

> With objMail
> .to = "ma...@mail.de" 'Wird nur benotigt, wenn die Adresse noch nicht in der Vorlage ist
> .Subject = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"
> .attachments.Add FN
> .display
> End With

Hast du den Pfad zur Vorlage kopiert? Ist "C:\Users\Yanoobii\Documents\Meine Outlook Vorlagen\Anschriben Bereitstellung DE (Condor).oft"
korrekt oder sollte es nicht "Anschreiben" heißen?

Wenn alles korrekt ist, ändere den letzten Teil so ab:

With objMail
.Subject = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"
.attachments.Add strFN
.display
End With

Bernhard Sander

unread,
May 22, 2018, 5:59:41 AM5/22/18
to
Hallo Hakan,

hier weist Du der Variable strFN den Dateinamen mitsamt Verzeichnis zu:>> strFN = strVerzeichnis & strDateiName

>> With objMail
...
hier versuchst Du die Variable FN zu benutzen. Die müsste wahrscheinlich strFN heißen
>> .attachments.Add FN
...
>> End With

Versuch's mal mit der Zeile:
.attachments.Add strFN


Viele Grüße
Bernhard Sander

Hakan Kaya

unread,
May 22, 2018, 10:45:39 AM5/22/18
to
Hallo Claus

Die Aufgabe ist gelöst. Ganz ganz herzlichen Dank an alle Mitwirkenden für ihre Hilfe und vor allem für Ihre Geduld mit mir.

Das Tabellenblatt wird nun wie gewünscht mit einem Zeitstempel als Präfix versehen, in eine eigene Outlook-Vorlage eingefügt und kann versendet werden.

So sieht der endgültige Code aus:


Sub ErstellePDFUndSendeAlsAnhang()

Dim strDateiName As String
Dim strVerzeichnis As String
Dim strFN As String
Dim objOL As Object, objMail As Object

strDateiName = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"

strVerzeichnis = _
"C:\Users\Yanoobii\Documents\Speicher Versandte Bereitstellungen\"
strFN = strVerzeichnis & strDateiName

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFN, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

Set objOL = CreateObject("Outlook.Application")
Set objMail = objOL.createitemfromTemplate("C:\Users\Yanoobii\Documents\Meine Outlook Vorlagen\Anschreiben Bereitstellung DE (Condor)")

With objMail
.Subject = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"
.attachments.Add strFN
.display
End With


End Sub

hakan.kay...@googlemail.com

unread,
Jun 17, 2018, 1:42:21 PM6/17/18
to
Hallo Claus

Wenn ich anstatt einer .PDF eine .xlsx Datei erzeugen und anhängen wollte, wäre dieser Code dann auch hierfür zu verwenden, indem man an entsprechenden Stellen lediglich PDF gegen XLSX austauscht oder muss ich noch an anderen Stellen des Codes Änderungen vornehmen?

Gruß
Hakan

Claus Busch

unread,
Jun 17, 2018, 2:05:14 PM6/17/18
to
Hallo Hakan,

Am Sun, 17 Jun 2018 10:42:20 -0700 (PDT) schrieb
hakan.kay...@googlemail.com:

> Wenn ich anstatt einer .PDF eine .xlsx Datei erzeugen und anhängen wollte, wäre dieser Code dann auch hierfür zu verwenden, indem man an entsprechenden Stellen lediglich PDF gegen XLSX austauscht oder muss ich noch an anderen Stellen des Codes Änderungen vornehmen?

probiere es dann mal so:

Sub ErstelleXLSXUndSendeAlsAnhang()

Dim strDateiName As String
Dim strVerzeichnis As String
Dim strFN As String
Dim objOL As Object, objMail As Object

strDateiName = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).xlsx"

strVerzeichnis = _
"C:\Users\Yanoobii\Documents\Speicher Versandte Bereitstellungen\"
strFN = strVerzeichnis & strDateiName

ActiveSheet.Copy
ActiveWorkbook.SaveAs strVerzeichnis

Set objOL = CreateObject("Outlook.Application")
Set objMail = objOL.createitemfromTemplate("C:\Users\Yanoobii\Documents\Meine Outlook Vorlagen\Anschreiben Bereitstellung DE (Condor)")

With objMail
.Subject = Format(Now, "dd.mm.yyyy_hh.nn") & " Bereitstellung DE (Condor).pdf"
.attachments.Add ActiveWorkbook.FullName
.display
End With
ActiveWorkbook.Close

End Sub

hakan.kay...@googlemail.com

unread,
Jun 18, 2018, 2:04:05 AM6/18/18
to
Hallo Claus,

vielen Dank für Deine Hilfe.

Ich habe den Code mit den entsprechenden Dateipfaden ergänzt. Beim Testlauf wird eine .XLSX Datei generiert aber nicht mit der im Code spezifizierten Formatierung gespeichert (Datum und Zeit als Präfix zum Dateinamen) und im Dateiordner abgelegt. Der Rest funktioniert dem entsprechend auch noch nicht. Im Debug-Modus wird die Codezeile

ActiveWorkbook.SaveAs strVerzeichnis

gelb markiert. Ich habe den Code angefügt. Wie gesagt, das zu versendende Tabellenblatt wird extrahiert/generiert. Weiter geschieht nichts.


Sub ErstelleXLSXUndSendeAlsAnhangEW()

Dim strDateiName As String
Dim strVerzeichnis As String
Dim strFN As String
Dim objOL As Object, objMail As Object

strDateiName = Format(Now, "dd.mm.yyyy_hh.nn") & " Gate- und Positionsplan_EW_CGN.xlsx"

strVerzeichnis = _
"C:\Users\Yanoobii\Documents\Speicher Versandte Gate-Pos-Pläne\"
strFN = strVerzeichnis & strDateiName

ActiveSheet.Copy
ActiveWorkbook.SaveAs strVerzeichnis

Set objOL = CreateObject("Outlook.Application")
Set objMail = objOL.createitemfromTemplate("\\CG07FS01\usrdaten$\KayaHa\Daten\Profildaten\Desktop\MailVorlagen ab 01.03.2017\Positions- und Gateplan\Vorlage__EW Pos -und Gateplan ( Ab 31.12.2017 ).oft")

With objMail
.Subject = Format(Now, "dd.mm.yyyy_hh.nn") & " Gate- und Positionsplan_EW_CGN.xlsx"

Claus Busch

unread,
Jun 18, 2018, 5:53:10 AM6/18/18
to
Hallo Hakan,

Am Sun, 17 Jun 2018 23:04:04 -0700 (PDT) schrieb
hakan.kay...@googlemail.com:

> Ich habe den Code mit den entsprechenden Dateipfaden ergänzt. Beim Testlauf wird eine .XLSX Datei generiert aber nicht mit der im Code spezifizierten Formatierung gespeichert (Datum und Zeit als Präfix zum Dateinamen) und im Dateiordner abgelegt. Der Rest funktioniert dem entsprechend auch noch nicht. Im Debug-Modus wird die Codezeile
>
> ActiveWorkbook.SaveAs strVerzeichnis

sorry, da habe ich leider einen Fehler eingebaut.
Es sollte heißen:

ActiveWorkbook.SaveAs strFN

hakan.kay...@googlemail.com

unread,
Jun 18, 2018, 6:13:17 AM6/18/18
to
Hallo Claus

Vielen Dank,

jetzt sieht es gut aus. Das nächste was gelb markiert wird, ist der Pfad zu meiner Email Vorlage auf der Arbeit. Da denke ich jedoch zu wissen, was zu tun ist. Nochmals danke für Deine Hilfe.

Gruß
Hakan
0 new messages