Hallo Erich,
erstmal die schlechte Nachricht: Die erwähnten Controls gibt's nicht bei VBA, nur VB. Trotzdem würde ich in Deinem Fall mit VBA arbeiten.
Jetzt die ganz schlechte: Musst selber programmieren. Beispiel anbei.
Der Ablauf müsste in etwa so aussehen (Pseudo-Code;
die angegebenen Control-Bezeichnungen beziehen sich auf das Bild):
- Laufwerke ermitteln und in DriveList-Combo eintragen oder
per Code abfragen/vorgeben;
- Laufwerk auswählen; löst nachstehende aus;
- Verzeichnisse ermitteln und in eine ListBox (DirListBox)eintragen;
im Root-Verzeichnis enthaltene Dateien in die FileListBox;
- Wird ein Verzeichnis der DirListBox ausgewählt,
so werden alle Unter-Verzeichnisse in die DirListBox eingetragen,
alle gefundenen Dateien in die FileListBox; etc.
- die DirListBox muss zwingend das Verzeichnis '..' aufweisen,
sonst kommst nimmer zurück.
- die FileListBox hat Attribut MultiSelect
- CommandButtton 'Keep' schreibt ausgewählte Dateien aus FileListBox
in die 'Selected'-ListBox; deaktiviert die Auswahl (selected.count=0);
- Lauwerk/Verzeichnis ändern und wieder Auswahl übertragen;
- CBtn 'Remove' entfernt eventuell unerwünschte Einträge aus der 'Selected'-Liste
- CBtn 'OK' liest die Einträge aus 'Selected' aus und lädt sie in Catia
- CBtn 'Cancel' bricht den Vorgang ab
Das beigefügte Beispiel zeigt wie Dateien rekursiv gefunden werden,
einmal mit VB und einmal mit API.
Die Anweisung
Code:
filestring = Dir$(DirPath & FileSpec, vbArchive Or vbHidden Or vbSystem Or vbDirectory)
wirst vermutlich in
Code:
filestring = Dir$(DirPath & FileSpec, vbArchive Or vbDirectory)
abändern wollen.
Alternativ dazu kannst Dich auch beim Common Controls Replacement Project bedienen.
Dort findest Du erweiterte/verbesserte VB-Controls mit Demo-Beispielen.
Der Haken dabei ist, dass die Controls auf jeder Maschine vorhanden sein müssen, auf dem das Makro laufen soll.
Nota: Das VB-Control FileListBox merkt sich auch nix. Auch da hättest eine Merkliste/-Array anlegen müssen.
Hope it helps,
Joe
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP