Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1564to1568
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ordner anhand erster Zeichen finden

Ordner anhand erster Zeichen finden
04.07.2017 10:27:35
Michl
Hallo zusammen,
meine VBA-Kentnisse waren bisher immer so gut, dass ich anhand einer Google-Suche mir immer die passenden Teile von Makros zusammensuchen und an meine Bedürfnisse anpassen konnte. Nun komme ich aber leider nicht mehr weiter.
Ich stehe vor folgendem Problem:
Ich möchte in einem Ordner einen bestimmten Unterordner finden, von dessen Namen ich allerdings nur die ersten paar Zeichen kenne.
Die Ordnerstruktur sieht so aus:
ZuDurchsuchenderOrdner\Ordner1_blabla1
ZuDurchsuchenderOrdner\Ordner2_blablabla6
ZuDurchsuchenderOrdner\Ordner3_blabla657
Zu jedem Ordner weiß ich wie der Part Ordner 1 - 3 heißt, nicht jedoch den "blabla"-Part am Ende. Ich schaffe es einfach nicht mit verschiedenen Ansätzen den Ordner1 zu finden und den gesamten Ordnernamen Ordner1_blabla1 in einen String zum Abspeichern der Datei zu schreiben.
Über jeden entscheidenden Hinweis oder sogar ein passendes Codebeispiel wäre ich überaus dankbar.
Freundliche Grüße
Michl

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: API
04.07.2017 10:38:54
Fennek
Hallo,
teste mal:

Declare Function SearchTreeForFile Lib "imagehlp.dll" ( _
ByVal RootPath As String, _
ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long
Private Sub Test()
Dim Retval As Long, TmpStr As String * 256
' Suche beginnen
Retval = SearchTreeForFile("c:\zuDurchsuchenderOrdner\Ordner*", TmpStr)
If Retval = 0 Then
MsgBox "Es wurde keine Datei mit diesem Namen gefunden"
Else
MsgBox Left$(TmpStr, InStr(1, TmpStr, vbNullChar) - 1), , _
"Gefundene Datei"
End If
End Sub
mfg
AW: API
04.07.2017 11:10:43
Michl
Hallo Fennek,
vielen Dank für deinen Code. Vielleicht hätte ich noch erwähnen müssen, dass ich die 64Bit-Version von Excel nutze. Ich habe hier folgendes versucht:
Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" ( _
Und ich habe im Hinterkopf, dass ich auch mit "User32" irgendwie arbeiten kann, aber auch hier ist mein Wissen nicht groß genug um das zu lösen. Problem noch: Eigentlich sollte das Marko sowohl unter 32 als auch unter 64Bit laufen.
Den Rest konnte ich nach dem eben geschilderten Problem noch nicht testen.
Freundliche Grüße
Michl
Anzeige
AW: DOS
04.07.2017 11:22:11
Fennek
Hallo,
mit API's habe ich erst vor kurzem angefangen, d.h. ich finde es interessant, habe aber fast keine Erfahrung. Aber: der gezeigte Code lief auf meinem 64-bit System.
Es könnte auch mit DOS gehen. Einige Anpassungen musst du aber selbst vornehmen:

Sub M_snb_dir() 'von snb
sn = filter(Split(CreateObject("wscript.shell").exec("cmd /c dir ""c:\zuDurchsuchenderOrdner\* _
.*"" /b/s").stdout.readall, vbCrLf), "Order1")
For Each d In sn
Debug.Print d
Next d
End Sub
mfg
AW: DOS
04.07.2017 11:46:51
Michl
Hallo Fennek,
mit DOS habe ich quasi gar keine Erfahrung. Ich habe den Ordnerpfad entsprechend angepasst und das "Ordner1" durch einen beliebigen Ordner aus dem zu durchsuchenden Verzeichnis ersetzt. Letztendlich öffnet sich das CMD-Fenster und es passiert nichts.
Freundliche Grüße
Michl
Anzeige
AW: Ordner anhand erster Zeichen finden
04.07.2017 12:23:42
Matthias
Hallo! Das hier wäre auch noch eine Variante. Die Strings (also suche und Quellpfad anpassen). VG

Sub suche()
Dim fso As Object
Dim unterordner As Object
Dim ordner As Object
Dim quellordner As String
Dim suchname As String
Set fso = CreateObject("Scripting.FileSystemObject")
quellordner = "c:\"
suchname = "Ordner1_"
Set unterordner = fso.getfolder(quellordner).subfolders
For Each ordner In unterordner
If Left(ordner.name, Len(suchname)) = suchname Then MsgBox ordner.name
Next
End Sub

AW: Ordner anhand erster Zeichen finden
04.07.2017 13:32:41
Michl
Hallo Matthias,
vielen Dank. Ich konnte deinen Code erfolgreich in meinem Makro verbauen. Letztendlich habe ich mal von ein paar Namen nur die if-Zeile in folgendes für meine Bedürfnisse geändert:

If Left(ordner.Name, Len(suchname)) = suchname Then Projektpfad = Pfad & ordner.Name & "\"
Ich habe die letzten Wochen immer mal wieder an dem Problem gesessen und nun endlich ist das Makro mal von ein paar Schönheitskorrekturen fertig.
Nochmals vielen Dank!
Freundliche Grüße
Michl
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige