Ist die Aufgabe "wie geschaffen für VBA" oder würdet Ihr sagen "Oh no, völlig falscher Weg"?
Kann man mal machen. Genauso ginge PowerQuery. Aber wer bock auf VBA hat, why not.
Jede Pdf wird in folgender Form benannt: Vorname_Nachname_Schulungsbezeichnung_ID.pdf (die Schulungsbezeichnung wird je nach Länge des Vor- und Nachnamens unterschiedlich abgekürzt)
Würde ich umstrukturieren; ID und Schulungsnummer sind Zahlen (anstelle Bezeichnung); also eine fixe anzahl Stellen
bspw. 0001_0815_Vorname_Nachname
Und da Du ohnehin schon eine Schleife einsetzt, würde Ich dort gleich alle Entscheidungen treffen.
Somit sparst Du Dir den nachgelagerten Code.
Skizze:
i. Schleife um Dateinamen einzulesen
ii. Optionen:
a) anstatt alles in ein Array => ein benutzerdefiniertes Recordset einsetzen; später mit dessen Filter-Eigenschaft und der CopyFromRecordset-Methode in einem Rutsch in die einzelnen Arbeitsblätter schreiben
b) Eine benutzerdefinierte Funktion schreiben, welche als Parameter das Zielarbeitsblatt und weitere Daten mitbekommt. Die Funktion schreibt in das passend Arbeitsblatt, direkt in die nächste freie Zelle/Zeile
zu a)
Hier verwendet Du die Adodb.Recordset-Klasse
zu b)
Hier bspw. die Kombination aus VBA.Split(), VBA.Filter()
Fertigen Code kann Ich Dir leider nicht bieten; aber Beispielcode für Dein Problem bzw Teilprobleme, kann Ich anbieten und Dich in Deiner Umsetzung unterstützen.
Du kannst natürlich auf anderes Feedback warten und dort weitermachen. Ist Deine Entscheidung und wär Dir keiner "böse".
|