![]() |
|
Automatisches Erstellen von PDFs - die Lösung - Druckversion +- Office-Fragen.de (https://office-fragen.de) +-- Forum: Microsoft Office (https://office-fragen.de/forum-1.html) +--- Forum: Excel (https://office-fragen.de/forum-2.html) +--- Thema: Automatisches Erstellen von PDFs - die Lösung (/thread-29314.html) |
Automatisches Erstellen von PDFs - die Lösung - d'r Bastler - 13.04.2026 Moin Leon, bei allem Fairständnis, dass Dein Thema von Steve geschlossen wurde, sollst Du nicht dabei der Leidtragende sein. Deshalb hier eine einfache VBA-Lösung, deren Einbau in Dein Workbook Schritt für Schritt beschrieben ist. Kein Panik, es ist auch für VBA-Neulinge (also solche die es zu schätzen lernen werden ) leicht und in wenigen Minuten machbar.
Code: Option Explicit5. In Zeile 6 findest Du ein Array (eine Liste) mit Beispielnamen Deiner Arbeitsblätter, die Du bitte anpasst. Achte dabei auf die Syntax: Jeder Blattname muss genau so in Anführungszeichen stehen, wie Du ihn unten in der Mappe siehst und vom nächsten durch ein Komma getrennt sein. Wenn Du dynamische Namen hast, zeige mir hier eine Liste aller Blattnamen und ich passe Dir den Code entsprechend an. 6. Direkt darunter definierst Du das Verzeichnis, in das die PDFs abgelegt werden sollen. Willst Du die Dateien z.B. im Verzeichnis "D:\Meine PDFs" ablegen, ersetzt Du ThisWorkbook.Path durch den Verzeichnisnamen in Anführungszeichen. 7. In Zeile 15 (s. oben im Editor-Menü) wird vor dem Druck der Blatt = Dateiname um das aktuelle Datum ergänzt. Wenn Du das nicht möchtest, setzt Du direkt nach sht.name ein Hochkomma (über der Raute). 8. Nach Deinen Anpassungen speicherst Du die Date erneut Den letzten Schritt machst Du in DieseArbeitsmappe: Durch Doppelklick öffnest Du deren Codefenster und kopierst diesen Code dort hinein: Code: Option Explicitsetzt Deinen Cursor hinter Workbook_Open() und drückst F5. Du siehst erst mal kein Ergebnis, aber: Damit wird F12 diesem Makro zugeordnet und Du kannst Deine PDFs mit nur einem Tastendruck exportieren. Willst Du eine andere F-Taste, achte auf Anführungsstriche und Klammern! Wie kann's noch besser werden? Dass Du jedes Mal auch noch sehen willst, wie die PDFs denn aussehen, wird Dir sicher igendwann lästig werden. Daher habe ich es hier weggelassen - es ist aber natürlich möglich. Als interessante Ergänzung könnte ich mir aber vorstellen, dass die Berichte sofort oder später per Outlook verschickt werden und dabei aus demAusgabeordner in den Unterordner Versandt verschoben werden. Lass wissen, was das veraltete VBA Dir noch Gutes tun kann ![]() Schöne Grüße RE: Automatisches Erstellen von PDFs - die Lösung - HKindler - 13.04.2026 Hi, theoretisch würde in der Hauptroutine auch eine Schleife reichen. Dann braucht man auch kein If. Code: Option ExplicitVorteil: weniger Overhead Nachteil: Sollte ein Blattname nicht vorhanden sein, gibt es einen Fehler. RE: Automatisches Erstellen von PDFs - die Lösung - d'r Bastler - 13.04.2026 Moin Helmut, na da habe ich Deinen Vorschlag doch mal gleich ausprobiert und festgestellt, dass sich mit Timer kein nennenswerter Unterschied messen lässt: Beide Codes liegen zeitlich quasi gleich auf. Das ist dann eher der Umfang des Inhalt der Sheets der Knackpunkt. Wenn leon aber zum Beispiel mit Tages- und Wochenberichten arbeitet gibt's den Wochenbericht (weil dynamisch generiert) wohl nur am Freitag und dann würde der Knopfdruck an vier von funf Tagen rausfliegen. Wohl kaum Sinn der Sache ... und nochmal ein Argument für dynamisch erstellte Ausgabe-Formate.Sicher könnte man in Deinem Code den Wochentag abfangen und dann die Abfrage entsprechend modifizieren. Warum denn einfach, wenns auch kompliziert geht... Schöne Grüße RE: Automatisches Erstellen von PDFs - die Lösung - HKindler - 13.04.2026 Hi Bastler, "Overhead" drückt sich, wie du schon selbst bemerkt hast, nicht nur in Millisekunden aus, sondern auch in der Komplexität der Programmierung. Aber du darfst dich gerne auch mit zehn Schleifen und neun If-s austoben, wenn es dir Spaß macht. Immerhin habe ich den "Nachteil" meiner Methode gleich mit aufgeführt. Und wenn man "fehlende" Blätter ignorieren will, dann kann man das so machen: Code: Option ExplicitRE: Automatisches Erstellen von PDFs - die Lösung - d'r Bastler - 13.04.2026 Also - ich sehe in meinem Code aktuell eine Schleife mit zwei Durchläufen und dann eine, deren Durchläufe durch die Anzahl der Blätter bestimmt wird und diese trifft Dich nicht weniger. Von zehn Schleifen und neun IFs kann ich da nichts entdecken. Wenn Du tatsächlich optimieren willst, gibt es da durchaus Potential. Schau mal: Code: Option ExplicitDa ist's tatsächlich nur noch genau eine Schleife, es braucht kein Array, kein Variant für die items. Stellt sich die Frage, was soll denn Dein Gemecker?
Schönn Amnd noch ...
Hier noch als Nachtrag die Timer-Zeiten: vHK 0,14453125, v1 0,140625, v2 0,140625. Deine Version vHK ist die langsamste ... knapp 2,8 % langsamer ... immerhin ... Ich hole mir dann mal 'nen Doppelkorn
RE: Automatisches Erstellen von PDFs - die Lösung - HKindler - 13.04.2026 (13.04.2026, 17:22)d'r Bastler schrieb: Da ist's tatsächlich nur noch genau eine Schleife, es braucht kein Array, kein Variant für die items.Eine Schleife über alle vorhandenen Blätter. Bei mir ist es eine Schleife über alle gewünschte Blätter - aber geschenkt, so kann man es auch machen. (13.04.2026, 17:22)d'r Bastler schrieb:Habe ich irgendwo gemeckert? Wenn du jeden Hinweis auf mögliche Verbesserungen als Gemecker empfindest und dies mit fetter Schrift herausschreist, wo bleibt dann dein freundlicher Umgangston? Immerhin hast du erkannt, dass eine Schleife ausreicht. Und damit dieser Thread nicht ebenso wie der vorherige gesperrt wird, war das jetzt mein letzter Post dazu. RE: Automatisches Erstellen von PDFs - die Lösung - d'r Bastler - 13.04.2026 Na - dann Prösterchen !
RE: Automatisches Erstellen von PDFs - die Lösung - d'r Bastler - 13.04.2026 Ok Helmut, dann mal ganz kleingeschrieben, damit Du meine Kommentar nicht wieder als Gebrüll verstehst. Die Frage, was Du mit Deinen Ergänzungen erreichen wolltest hast Du leider nicht beantwortet. Wirklich erkennbare Vorteile konnte ich auch nicht finden. Aber durch Deine Formulierung austoben und unsinnige Behauptungen dazu, habe ich das schon als Gemecker empfunden. Ich habe aber Deinen Hinweis durch alle / durch die gewünschten aufgegriffen und das hier gebaut: Code: Sub Export_To_PDF_v3()Auch dieser Code ist Fehler-stabil und tut was er soll. Wenn ich jetzt mal für alle Versionen die Timer-Werte vergleiche, stelle ich fest, dass sie 1.) pro Durchlauf variieren und 2.) sich unterm Strich alle so wenig unterscheiden, dass man definitiv von keiner besseren Version sprechen kann. Wir streiten also um des Kaisers Bart. Und den hamwer ja nu schon lange nich mehr. Was "Eleganz" (= Minialismus) im Coding betrifft, gefällt mir meine Select-Version am besten. Schönen Amnd noch und Dank für die Anregungen! |