Projektnummern mit RegularExpressions finden

Problemstellung

Folgendes Szenario dürften so einige Sachbearbeiter kennen: Es gibt ein Sammelbecken mit Dateien, die unter anderem eine Projektnummer oder Auftragsnummer beinhalten. Ziel für diese Dateien sind die entsprechenden Projektordner in einer zentralen Struktur. Auch die Projektordner beinhalten die Projektnummer oder Auftragsnummer. So eine Struktur dürfte in vielen Unternehmen, ob Old School auf einem Serverlaufwerk oder etwas aktueller in der Cloud.

Lösungsansatz

Doch wie findet man nun 1. die Nummer in dem Dateinamen und 2. den korrekten Zielordner(besonders wenn der nicht direkt im Stammverzeichnis liegt)? Das Stichwort ist hier RegularExpressions oder eben Reguläre Ausdrücke. Damit lassen sich aber nicht nur Nummernfolgen finden sondern komplexe Ausdrücke, Passwörter auf Konformität prüfen (min x Stellen, Groß/Kleinbuchstaben, Sonderzeichen, etc.), oder auch ganze Formelparser bauen. Soweit soll es hier aber nicht gehen.

Ok, wir nehmen mal an, dass unsere Auftragsnummer, nach der wir suchen möchten, beispielsweise folgendes Format hat: P<Jahreszahl>-<fortlaufende Nummer, 5 Stellen>. Um mal ohne viel Aufwand RegExs zu testen, eignet sich regex101.com super und soll hier auch zum Einsatz kommen. Als Testobjekte sollen dafür mal P2023-45627, P2015-33456, P1999-11223 und P1976-00132 dienen. Damit das nun nicht zu leicht wird, könnte vor/hinter der Projektnummer nichts, Unterlagen, Rev.B, Zeichnung-12345 stehen.

Um nun den Suchbegriff abzubilden, braucht es eigentlich nur folgendes:

([pP][0-9]{4}-[0-9]{5})
(        : Öffnet die Matchgruppe
[pP]     : Ein p oder P
[0-9]{4} : 4 Zeichen, alles von 0-9 erlaubt
-        : Trennzeichen (ggf. auch [-_] möglich, wenn Fehleingaben berücksichtigt werden sollen
[0-9]{5} : 5 Zeichen, alles von 0-9 erlaubt
)        : Schließt die Matchgruppe
Weiterlesen

Marcos in Office durch aufnehmen?

Soll ich, oder besser nicht?

Schickt sich das, als Entwickler für ein Macro wirklich den Aufnahme-Button zu nutzen? Warum denn eigentlich nicht? Es ist ja immerhin nicht gleich das Endergebnis, oder? Es geht doch manchmal nur darum schnell mal einen groben Ansatz zu haben, oder nicht wieder länger nach Funktionen und deren Verwendungsmöglichkeiten zu googlen. Mit wenigen klicks kann wenigstens schon mal der grobe Rahmen erzeugt werden.

Aufgezeichnet und dann?

Das ist eben der spannende Teil: Die Aufzeichnung ist beispielsweise in Excel schnell mal 20-30 Zeilen lang und oft absolut zu einer Zelle bezogen. Nun beginnt das filtern:

  • Was muss denn wirklich sein?
  • Welcher Bezug macht Sinn? Relativ zur Selektion, absolut zu einer Spalte, ein mix?
  • Wie geht’s nun daraus weiter?
  • Welche möglichen Fehleingaben und Fehlinterpretationen sollen abgefangen werden?

Führt das immer schneller ans Ziel?

Das sicherlich nicht, denn existieren vielleicht schon fast fertige Funktionen, die nur noch modifiziert werden müssen, bringt die Aufzeichnung meist nur mehr Chaos in die Lösung. Aber auch da: es gibt kein Schwarz oder Weiß: Fehlt ein Puzzlestück, eine Funktion, dann ist’s manchmal hilfreich sich anzusehen, was Office selbst bauen würde. Man muss es ja nicht zwingend auch übernehmen…