Filesearch funktioniert ab Excel 2007 nicht mehr

Dieses Thema Filesearch funktioniert ab Excel 2007 nicht mehr im Forum "Microsoft Office Suite" wurde erstellt von klexy, 16. Feb. 2012.

Thema: Filesearch funktioniert ab Excel 2007 nicht mehr Ich habe eine Tabelle mit einem Haufen Dateinamen in einer bestimmten Spalte. Wenn ich einen Dateinamen markiere und...

  1. Ich habe eine Tabelle mit einem Haufen Dateinamen in einer bestimmten Spalte. Wenn ich einen Dateinamen markiere und einen Button drücke, soll die entsprechende Datei geöffnet werden. Die Datei ist im Ordner S:\Bla oder einem seiner Unterordner.

    Bisheriges Makro:
    Code:
    Sub Datei_öffnen()
    
    Dim Pfad As String, Dateiname As String
    Pfad = S:\Bla\
    Dateiname = Activecell.Value & .xls
    
    With Application.Filesearch
      .LookIn = Pfad
      .SearchSubFolders = True
      .FileName = Dateiname
      If .Execute() > 0 Then
        Workbooks.Open (.FoundFiles(1))
      End If
    End With
    
    End Sub
    Funktioniert wunderbar wenn man nicht Excel 2007 oder 2010 verwendet.

    Ich hab im Internet einiges gefunden, was mich aber nicht weitergebracht hat, z.B. http://www.office-loesung.de/ftopic171098_0_0_asc.php oder gar http://www.office-loesung.de/ftopic148247_0_0_asc.php Anscheinend will da keiner eine Datei öffnen, sondern irgendwas sortieren oder keine Ahnung.

    Hat einer einen Tip?
     
  2. Hallo klexy,

    zu dem Problem findest du bei Hajo eine Beispieldatei (mit FileSystemObject )
    http://hajo-excel.de/2007_hinweise.htm

    Gruß Matjes :)
     
  3. Hallo Matjes,

    damit kann ich leider nix anfangen. DIe Datei, die sich auf Excel 2007 bezieht kann ich hier mit meinem Excel97 nicht öffnen und das, was in der anderen steht, versteh ich nicht.

    Andererseits will der Hajo auch keine Datei öffnen, sondern alle Excel-Dateien aus einem Ordner heraus auflisten.
    Das geht mit einer Batch-Datei mit einer einzigen Befehlszeile viel einfacher:

    Code:
    dir *.xls /b > liste.txt
    Wo fehlt mir der Anschluss?
     
  4. Hallo klexy,

    mit FileSystemObject sähe dein Makro so aus.

    Gruß Matjes :)
    Code:
    Option Explicit
    
    Sub Datei_oeffnen_mit_FSO()
    ->fuer FSO muss unter Extras->Verweise Microsoft Scripting Runtime angehakt sein
     Dim fso As FileSystemObject
     Dim sPfad As String, sFileName As String, sFileNameFull As String
     
     sPfad = D:\00_TestExcel\Test\
     sFileName = xxxx.xls
     
     Set fso = New Scripting.FileSystemObject
     
     sFileNameFull = FindFile(fso, sPfad, sFileName)
    
     If sFileNameFull <>  Then Workbooks.Open (sFileNameFull)
    
    Aufraeumen:
     Set fso = Nothing
    End Sub
    '-------------------------------------------------------------------------------------------------------------------
    Private Function FindFile(fso As FileSystemObject, sPath As String, ByVal sFileName As String) As String
     
     Dim Folder As Folder, Folder2 As Folder
    
     On Error GoTo err_Handler
     
     Set Folder = fso.GetFolder(sPath)
    
     FindFile = Dir$(fso.BuildPath(Folder.Path, sFileName), vbNormal Or vbReadOnly)
    
     If FindFile <>  Then FindFile = Folder.Path & Application.PathSeparator & sFileName: GoTo Aufraeumen
     
     If Folder.SubFolders.Count > 0 Then
      For Each Folder2 In Folder.SubFolders
       FindFile = FindFile(fso, Folder2.Path, sFileName)
       If FindFile <>  Then Exit For
      Next
     End If
    
    Aufraeumen:
     Set Folder = Nothing: Set Folder2 = Nothing
     On Error GoTo 0
     Exit Function
    
    err_Handler:
     FindFile = FEHLER
     Resume Next
    End Function
     
  5. Danke.
    Hab jetzt eine Stunde draufgestarrt und fast nix verstanden. Werd es nächste Woche vor Ort ausprobieren.

    Spielt es keine Rolle, dass im oberen Makro sPfad steht und im unteren sPath?

    Und wo ist in Excel 2007 der Menüpunkt Extras? Den gibt es dort doch gar nicht.
     
  6. das stimmt so, Matjes ist da sehr zuverlässig, wenn es um Makros geht.

    du meinst dies hier?
    Code:
    fuer FSO muss unter [color=red]Extras[/color]->Verweise Microsoft Scripting Runtime angehakt sein
    Der Code gilt nicht für Excel selbst, sondern für Visual Basic-Editor.

    pan_fee
     
  7. Hallo zusammen,
    Danke für die Blumen :D

    Ich hab den Code nochmal etwas gebügelt, soweit möglich deutsche Begriffe für die Variablen verwendet und noch ein paar Kommentare eingefügt.

    Gruß Matjes :)
    Code:
    Option Explicit
    
    Sub Datei_oeffnen_mit_FSO()
    ->fuer FSO muss im VB-Editor unter Extras->Verweise Microsoft Scripting Runtime angehakt sein
     Dim oFso As FileSystemObject
     Dim sPfad As String, sFileName As String, sFileNameFull As String
     
     sPfad = D:\00_TestExcel\Test
     sFileName = xxxx.xls
     
    ->FileSystemObject für den Zugriff auf Verzeichnis-Struktur erzeugen
     Set oFso = New Scripting.FileSystemObject
     
     sFileNameFull = FindFile(oFso, sPfad, sFileName)
    
     If sFileNameFull <>  Then Workbooks.Open (sFileNameFull)
    
    Aufraeumen:
     Set oFso = Nothing
    End Sub
    Private Function FindFile(oFso As FileSystemObject, sPfad As String, sFileName As String) As String
     
     Dim oVerzeichnis As Folder, oVerzeichnis2 As Folder
    
     On Error GoTo err_Handler
     
    ->Verzeichnis lesen
     Set oVerzeichnis = oFso.GetFolder(sPfad)
    
    ->prüfen, ob Datei im Verzeichnis vorliegt UND die Eigenschaft normal oder schreibgeschützt hat
     FindFile = Dir$(oFso.BuildPath(oVerzeichnis.Path, sFileName), vbNormal Or vbReadOnly)
    
    ->gefunden ? ja-> dann vollständigen Filenamen als Rückgabe setzen und Schluß
     If FindFile <>  Then FindFile = oFso.BuildPath(oVerzeichnis.Path, sFileName): GoTo Aufraeumen
     
    ->File in diesem Verzeichnis nicht vorhanden -> alle Unterverzeichnisse nacheinander durchsuchen
     If oVerzeichnis.SubFolders.Count > 0 Then
      For Each oVerzeichnis2 In oVerzeichnis.SubFolders
       FindFile = FindFile(oFso, oVerzeichnis2.Path, sFileName)
      ->wenn Filename gefunden -> Schluß
       If FindFile <>  Then Exit For
      Next
     End If
    
    Aufraeumen:
    ->Objekte löschen, damit sie von der GarbageCollection weggeräumt werden können
     Set oVerzeichnis = Nothing: Set oVerzeichnis2 = Nothing
     On Error GoTo 0
     Exit Function
    
    err_Handler:
     FindFile = FEHLER
     Resume Next
    End Function
     
  8. @ pan_fee
    1. Ich frag ja nur.
    2. Aha!

    @ Matjes
    Danke. Jetzt versteht ich 10%. Werd noch lange drüber brüten müssen.
    Hier bei mir auf Excel97 funktioniert es auf jeden Fall. Morgen bin ich vor Ort.
     
  9. @ Matjes
    Vielen Dank nochmal. Es funktioniert hervorragend und ich hab mittlerweile 50% verstanden. Das langt für die despektierliche Hausfrau.
     
Die Seite wird geladen...

Filesearch funktioniert ab Excel 2007 nicht mehr - Ähnliche Themen

Forum Datum
Open Office Datei direkt versenden funktioniert nicht .... Windows 10 Forum 31. Okt. 2016
HDD funktioniert nicht. Windows 10 Forum 30. Sep. 2016
Tastatur funktioniert nicht richtig - aber nur beim Login Hardware 23. Sep. 2016
WLan funktioniert erst beim zweiten Start des Notebooks Windows 10 Forum 28. Aug. 2016
Windows Update 10 funktioniert nicht Windows 10 Forum 9. Juni 2016