Filesearch funktioniert ab Excel 2007 nicht mehr

  • #1
K

klexy

Bekanntes Mitglied
Themenersteller
Dabei seit
04.05.2002
Beiträge
802
Reaktionspunkte
0
Ort
Bayern
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. oder gar Anscheinend will da keiner eine Datei öffnen, sondern irgendwas sortieren oder keine Ahnung.

Hat einer einen Tip?
 
  • #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
klexy schrieb:
Spielt es keine Rolle, dass im oberen Makro sPfad steht und im unteren sPath?
das stimmt so, Matjes ist da sehr zuverlässig, wenn es um Makros geht.

klexy schrieb:
Und wo ist in Excel 2007 der Menüpunkt Extras? Den gibt es dort doch gar nicht.

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,
PCDpan_fee schrieb:
klexy schrieb:
Spielt es keine Rolle, dass im oberen Makro sPfad steht und im unteren sPath?
das stimmt so, Matjes ist da sehr zuverlässig, wenn es um Makros geht.

pan_fee
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.
 
Thema:

Filesearch funktioniert ab Excel 2007 nicht mehr

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben