Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

ordner suchen mit teilweise bekannte namen | Herbers Excel-Forum


Betrifft: ordner suchen mit teilweise bekannte namen von: Rolandx
Geschrieben am: 07.08.2012 09:00:02

Hallo Zusammen,

stosse mal wieder an meine Grenzen und benoetige dringend Hilfe.

Ich suche bestimmte Dateien auf einem Server. Allerdings ist die Suche in den vorhandenen Ordnern nicht ganz so einfach, da es sich um Ordner mit Unterordnern handelt und ich in manchen Ordnern nur nach Teilstrings des Ordnernamens suchen kann (ist leider etwas schlecht zu erklaeren da ich keine Firmeninternen Informationen nach aussen geben darf und somit das ganze nur umschreiben kann).

Der Pfad des Servers ist mir bekannt. Diesen habe ich als "SearchFolder" deklariert.
Der Name des ersten Ordners ist mir ebenfalls bekannt und wird aus einer Exceldatei ausgelesen und als "FAT" deklariert.
Somit kann ich zumindestpruefen mit folgendem Code pruefen ob der gesuchte Ordner vorhanden ist und dann nach dem benoetigten Unterordner suchen

If CBool(Len(Dir(SearchFolder & "\" & FAT, vbDirectory)) > 0) = True Then
SearchFolder = SearchFolder & FAT
end if

Aber jetzt kommt mein Problem. Vom Unterordner sind mir nur 2 Teilstrings bekannt nach denen ich im Ordnernamen suchen kann. Die beiden Teilstrings habe ich mit "CEID_1" und "CEID_2" deklariert.
Ich muss also alle Unterordner durchsuchen ob in dessen Bezeichnung der Teilstring "CEID_1" und "CEID_2" vorkommt und wenn ja in diesem Unterordner nach einer bestimmten Datei suchen die ich dan oeffnen und bestimmte Werte auslesen muss.

Gibt es so etwas wie die DIR() funktion mit der ich nach Ordnern suchen kann ?
Dann koennte ich die Ordnerbezeichnungen einzeln auswerten indem ich das so mache

FoundFolder = Dir(SearchFolder & "\" & "*.xls")
Do While FoundFolder <> ""
FoundFolder = Dir()
If FoundFolder = "" Then
Exit Do
ElseIf InStr(FoundFolder, CEID_1) and InStr(FoundFolder, CEID_2) Then
bestimmte Datei oeffnen und bearbeiten
Exit do
End If
Loop

Waere wirklich super wenn mir hierzu jemand helfen koennte. Muss die Anwendung umgehend fertig bekommen weil mein Chef mir schon im Nacken sitzt.

Vielen Dank fuer Eure schnelle Hilfe.

  

Betrifft: AW: ordner suchen mit teilweise bekannte namen von: Rudi Maintaire
Geschrieben am: 07.08.2012 11:01:12

Hallo,
sowas?

Sub File_Suchen()
  Dim FSO As Object, oFolder As Object
  Dim strFolder As String, FAT As String
  Dim SearchFolder As String
  FAT = Sheets(1).Range("A1")
  Const CEID_1 As String = "ide"
  Const CEID_2 As String = "yxc"
  
  Const strFile As String = "Test.xls"    '****anpassen****
  SearchFolder = "\\Server1\Freigabe1\"   '****anpassen****
  
  Application.ScreenUpdating = False
  
  If Right(SearchFolder, 1) <> "\" Then SearchFolder = SearchFolder & "\"
  
  strFolder = SearchFolder & FAT
  
  
  Set FSO = CreateObject("Scripting.FileSystemObject")
  On Error Resume Next
  Set oFolder = FSO.GetFolder(strFolder)
  On Error GoTo 0
  
  If oFolder Is Nothing Then
    MsgBox strFolder & " nicht vorhanden!", , "Fehler"
  Else
    prcSubFolders oFolder, Array(CEID_1, CEID_2), strFile
  End If
End Sub

Private Sub prcSubFolders(oFolder, arrFolders, strFile)
  Dim oSubFolder As Object, i As Integer
  For i = 0 To 1
    If InStr(1, oFolder.Name, arrFolders(i), vbTextCompare) > 0 Then
      If Dir(oFolder.Path & "\" & strFile) <> "" Then
        prcOpenFile oFolder.Path & "\" & strFile
      End If
    End If
  Next
  For Each oSubFolder In oFolder.SubFolders
    prcSubFolders oSubFolder, arrFolders, strFile
  Next
End Sub

Private Sub prcOpenFile(ByVal strFile As String)
  Dim wkb As Workbook
  Set wkb = Workbooks.Open(strFile)
  'mach was
  wkb.Close False
End Sub

Gruß
Rudi


  

Betrifft: AW: ordner suchen mit teilweise bekannte namen von: Rolandx
Geschrieben am: 07.08.2012 11:03:55

Habe eine Loesung gefunden. Habe zwar seit gestern mehrere Stunden gegoogelt und so ganz verstehe ich das zwar nicht weil mir die Kenntnisse fehlen aber es funktioniert. Hier mal der Code falls es jemanden interressiert:

Sub Directory_Tree(SearchForElectricalCalculator)

Dim FSO As Object
Dim MainFolder As Object
Dim Folder As Object
Dim FolderName As String
Dim SUBFOLDER As Object

Set FSO = CreateObject("Scripting.FileSystemObject")
Set MainFolder = FSO.GetFolder(SearchForElectricalCalculator)
Set SUBFOLDER = MainFolder.SubFolders

For Each Folder In SUBFOLDER
FolderName = Folder.Name
        If InStr(FolderName, CEID_1) > 0 And InStr(FolderName, CEID_2) > 0 Then
        FoundFolder = Folder.Name
        Exit For
        End If
Next

Set SUBFOLDER = Nothing
Set MainFolder = Nothing
Set FSO = Nothing

End Sub
das rufe ich dann einfach in meinem anderen macro wie folgt auf:

Directory_Tree SearchFolder ' Macro to search for the CEID-Folder

Falls schon jamand an der Loesung gearbeitet hat .... sorry fuer den unnoetigen Zeitaufwand und vielen Dank.


Beiträge aus den Excel-Beispielen zum Thema "ordner suchen mit teilweise bekannte namen"