Die Trickkiste VBA von Office nutzen

Ich habe in den letzten Tagen zwei kleine VBA-Scripts (jeweils für Excel / Word) auf der Arbeit geschrieben. Ehrlich gesagt, hatte ich mich mit dem Thema VBA noch nicht groß beschäftigt, da ich aber schon lange mit Visual Basic programmiere, scheint es mir bisher kein Problem zu sein, sich schnell einzuarbeiten, da die Syntax recht ähnlich ist.

Das Makro für Excel ist eigentlich eher etwas rudimentär zu betrachten, da es eigentlich nur ein schlichter Namensabgleich in zwei verschiedenen Tabellen war, die bei Übereinstimmung den eindeutigen Hash in die andere Tabelle kopierte.

Mein zweites Makro, dass ich heute Morgen fertiggestellt habe, mit einigen guten Ansätzen und Problemlösungen durch den Freund WWW ;), gefiel mir persönlich da besser.

Folgende Problemstellung gab es zu lösen: Eine Mitarbeiterin brauchte eine Lösung, damit sie Serienbriefe aus Word heraus als PDFs gedruckt bekommt. Eigentlich ja keine so dramatische Sache, allerdings steckt der Teufel im Detail. Will man das Serienhauptdokument mit all seinen Datensätzen drucken, so werden alle Datensätze in eine PDF-Datei geschrieben. Genau das sollte ja nicht passieren!

Also galt es eine Lösung zu finden, damit aus jedem Datensatz eine eigene Datei erzeugt wurde. Nachdem dieses Problem gelöst war, gab es schon das nächste. Der PDF-Drucker erzeugte leider keinen aussagekräftigen Namen, sondern bloß einen, der sich aus dem Benutzernamen plus einer Jobnummer zusammensetzte. Damit man sich aber schneller bei einer großen Anzahl von Datensätzen zurechtfindet, galt es eine Lösung zu finden, die alle Dateien nach erfolgtem Druck durch die Bezeichnung eines fest definierten Datenfeldes eines jeden Datensatzes (z.B. der Nachname) umbenennt. Die Routine zum umbenennen war kein Problem. Allerdings dauerte es immer erst eine Weile, bis die erste Datei in dem Ausgabeordner die Datei erstellte, damit sie umbenannt werden konnte. Also musste noch eine Sleep-Routine eingebaut werden, die das Programm für rund 10 Sekunden in den Tiefschlaf versetzte, sodass der PDF-Drucker es in dieser Zeit schaffte, die erste Datei zu erstellen.

Hintergrund hierzu ist, dass der Ausgabeordner zuvor geleert wird (eine andere Möglichkeit fiel mir nicht ein, damit das Programm weiß, welche die erste umzubenennende Datei ist) und dann natürlicherweise ein Fehler kommt, wenn das Programm nach der ersten Datei (wird durch einen Zähler gefunden, da der Dateiname immer symmetrisch aufgebaut ist) sucht, aber keine findet. Hat der PDF-Drucker dann die erste Datei erstellt, ist der Zähler bereits über die Jobnummer hinweg und somit läuft der Zähler dann bis zum Buffer Overflow 😉

Aber jetzt läufts und das freut mich 😉 Vlt. schaffe ich es am Wochenende noch den Programmcode zu posten, falls es jemanden interessieren sollte.

[tags] VBA, Programmieren, Ausbildung[/tags]

2 Kommentare

  1. Hallo Rene,

    danke für den Tipp, allerdings musste dieser PDF-Drucker verwendet werden, da er praktisch im Firmenstandard ist und nicht jeder irgendein Programm installieren kann/darf 😉

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein