Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1220to1224
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

Mit VBA: Dateisuche in Ordnern

Mit VBA: Dateisuche in Ordnern
Giuseppe
Hallo Liebe Excelfreunde
"With Application.FileSearch" funktioniert seit 2007 nicht mehr...
Ich möchte mittels VBA eine Datei suchen lassen:
Suchen im Ordner C:\Test
Suchen nach Excel-Dateien die mit "abc" beginnen
Resultat: gefunden oder nicht gefunden
A1: C:\Test
A2: abc
A3: gefunden
Bitte um Hilfestellung
mfG
Salnet
AW: Mit VBA: Dateisuche in Ordnern
11.07.2011 11:32:44
Giuseppe
@Reinhard
Vielen Dank für den Hinweis/link
Funktioniert als eigenständige Datei tadellos.
Ich sollte das Makro jedoch in eine Bestehende Datei einbauen...
und dafür ist es mir zu komplex...
Welchen Teil brauche ich, aus all diesen Makros?
AW: Mit VBA: Dateisuche in Ordnern
11.07.2011 13:18:11
Hajo_Zi
Hallo Guiseppe,
Option Explicit
' Dieser Source stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.
' Der VB Code ist aus dem Beitrag  _
http://www.activevb.de/tipps/vb6tipps/tipp0492.html
' Verweis: Microsoft Scripting Runtime
' Originalcode
'Dim i As Long
'With Application.FileSearch
'    .NewSearch
'    .LookIn = ActiveWorkbook.Path   'Suchverzeichnis
'    .SearchSubFolders = False       'True wäre mit Unterverzeichnissen
'    .Filename = "*.csv"             'Dateien die mit .csv änden
'    .Execute                        'suche ausführen
'    For i = 1 To .FoundFiles.Count
'        Application.StatusBar = "-->>   Einlesen der Datei:  " & i & " / " & .FoundFiles.Count  _
& "  

Anzeige
AW: Mit VBA: Dateisuche in Ordnern
11.07.2011 13:29:57
Giuseppe
@Hajo_Zi
Vielen Dank, sieht sehr vielversprechend aus :-)
...doch leider gibts bei
"Dim FSO As New FileSystemObject"
eine Fehlermeldung
AW: Mit VBA: Dateisuche in Ordnern
11.07.2011 13:49:36
Rudi
Hallo,
du hast den Verweis auf die Microsoft Scripting Runtime nicht gesetzt.
So geht's auch ohne:
Private Sub SearchInFolder(ByVal Folderspec As String)  ' auslesen aufrufen mit Ordnername
Dim StTyp As String                                 ' Dateityp
Dim FSO As Object
Dim SearchFolder As Object
Dim FD As Object, FI As Object
Dim EachFil As Object, EachFold As Object
Dim LoI As Long    ' Laufvariable zum schreiben der Ordner
Set FSO = CreateObject("Scripting.Filesystemobject")
StTyp = "xlsm"
Set SearchFolder = FSO.GetFolder(Folderspec)
Set EachFil = SearchFolder.Files            ' Dateien in der jeweiligen Root
'   Dateien auslesen
For Each FI In EachFil                      ' Schleife über alle Dateien
'       Dateityp feststellen
If UCase(Right(FI.Name, Len(FI.Name) - InStrRev(FI.Name, "."))) = UCase(StTyp) Then
Call importieren_und_verschieben(FI.Name)
End If
Next FI
Set EachFil = Nothing
Set EachFold = Nothing
Set FSO = Nothing
End Sub

Gruß
Rudi
Anzeige
AW: Mit VBA: Dateisuche in Ordnern
11.07.2011 14:26:08
Giuseppe
@All
Nun sieht das komplette Makro wie folgt aus und funktioniert wunderbar:
Option Explicit
Sub Start()
SearchInFolder ThisWorkbook.Path
End Sub
Private Sub SearchInFolder(ByVal Folderspec As String)  ' auslesen aufrufen mit Ordnername
Dim StTyp As String                                 ' Dateityp
Dim FSO As Object
Dim SearchFolder As Object
Dim FD As Object, FI As Object
Dim EachFil As Object, EachFold As Object
Dim LoI As Long    ' Laufvariable zum schreiben der Ordner
Set FSO = CreateObject("Scripting.Filesystemobject")
StTyp = "xlsm"
Set SearchFolder = FSO.GetFolder(Folderspec)
Set EachFil = SearchFolder.Files            ' Dateien in der jeweiligen Root
'   Dateien auslesen
For Each FI In EachFil                      ' Schleife über alle Dateien
'       Dateityp feststellen
If UCase(Right(FI.Name, Len(FI.Name) - InStrRev(FI.Name, "."))) = UCase(StTyp) Then
Call importieren_und_verschieben(FI.Name)
End If
Next FI
Set EachFil = Nothing
Set EachFold = Nothing
Set FSO = Nothing
End Sub
Sub importieren_und_verschieben(StDatei As String)
MsgBox StDatei
End Sub ... Wie kann man nun das Ergebnis in den Zellen A1 bis A*** darstellen?
... Wo kann man das zu auflistende Verzeichnis definieren?
Danke
Anzeige
AW: Mit VBA: Dateisuche in Ordnern
11.07.2011 15:31:54
Rudi
Hallo,
Private Sub SearchInFolder(ByVal Folderspec As String)  ' auslesen aufrufen mit Ordnername
Dim StTyp As String                                 ' Dateityp
Dim FSO As Object
Dim SearchFolder As Object
Dim FD As Object, FI As Object
Dim EachFil As Object, EachFold As Object
Dim LoI As Long    ' Laufvariable zum schreiben der Ordner
Set FSO = CreateObject("Scripting.Filesystemobject")
StTyp = "xls"
Set SearchFolder = FSO.GetFolder(Folderspec)
Set EachFil = SearchFolder.Files            ' Dateien in der jeweiligen Root
'   Dateien auslesen
For Each FI In EachFil                      ' Schleife über alle Dateien
'       Dateityp feststellen
If UCase(Right(FI.Name, Len(FI.Name) - InStrRev(FI.Name, "."))) = UCase(StTyp) Then
Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1) = FI 'anpassen
End If
Next FI
Set EachFil = Nothing
Set EachFold = Nothing
Set FSO = Nothing
End Sub

Gruß
Rudi
Anzeige
AW: Mit VBA: Dateisuche in Ordnern
12.07.2011 09:34:08
Giuseppe
Danke Rudi
Funktioniert fast perfekt...
Nun möchte ich jedoch den such-Ordner bestimmen.
Der steht bei Sheets("Inhalt").Range("Q25")
----
Option Explicit
Sub Inhalt()
SearchInFolder ThisWorkbook.Path
End Sub
Private Sub SearchInFolder(ByVal Folderspec As String)  ' auslesen aufrufen mit Ordnername
Dim StTyp As String                                 ' Dateityp
Dim FSO As Object
Dim SearchFolder As Object
Dim FD As Object, FI As Object
Dim EachFil As Object, EachFold As Object
Dim LoI As Long    ' Laufvariable zum schreiben der Ordner
Set FSO = CreateObject("Scripting.Filesystemobject")
StTyp = "xlsm"
Set SearchFolder = FSO.GetFolder(Folderspec)
Set EachFil = SearchFolder.Files            ' Dateien in der jeweiligen Root
'   Dateien auslesen
For Each FI In EachFil                      ' Schleife über alle Dateien
'       Dateityp feststellen
If UCase(Right(FI.Name, Len(FI.Name) - InStrRev(FI.Name, "."))) = UCase(StTyp) Then
Sheets("Inhalt").Cells(Rows.Count, 1).End(xlUp).Offset(1) = FI 'anpassen
End If
Next FI
Set EachFil = Nothing
Set EachFold = Nothing
Set FSO = Nothing
End Sub
---
Grüsse Salnet
Anzeige
AW: Mit VBA: Dateisuche in Ordnern
12.07.2011 09:39:57
Rudi
Hallo,
ist doch ganz einfach.
Sub Inhalt()
SearchInFolder Sheets("Inhalt").Range("Q25")
End Sub

Gruß
Rudi
AW: Mit VBA: Dateisuche in Ordnern
12.07.2011 10:09:31
Giuseppe
...nun gibt aber ein error bei:
Set SearchFolder = FSO.GetFolder(Folderspec)
das größte Problem ist, ...
12.07.2011 12:32:08
Rudi
Hallo,
.... dass du überhaupt nicht verstehst, was der Code macht.
den Ordner Sheets("Inhalt").Range("Q25") gibt es nicht.
Da muss schon ein gültiger Ordner drin stehen.
Gruß
Rudi
AW: das größte Problem ist, ...
12.07.2011 12:55:21
Giuseppe
Dim Folder As String
Folder = Sheets("Inhalt").Range("Q25")
SearchInFolder Folder
geht auch nicht...
...das größte Problem ist, dass wissen relativ ist... :-)
Anzeige
dass du einen...
12.07.2011 13:20:42
Rudi
Hallo,
...ungültigen Pfad einer Variablen zuweist, ändert nichts an der Ungültigkeit.
Was steht in Sheets("Inhalt").Range("Q25")?
Gruß
Rudi
AW: dass du einen...
12.07.2011 13:49:09
Giuseppe
P:\Dokumentationen\Filter\0.1\40133-0861e Dolab\
Dies wechselt jedoch... Listen-Auswahl
Ordnerinhalt auslesen
12.07.2011 18:09:36
Anton
Hallo Giuseppe,
probier's hiermit:
Code:

Private Sub SearchInFolder(ByVal Folderspec As String)       ' auslesen aufrufen mit Ordnername
  Dim StTyp As String  
  Dim FSO As Object  
  Dim FI As Object  
  Set FSO = CreateObject("Scripting.Filesystemobject")  
  If Not FSO.FolderExists(Folderspec) Then  
    MsgBox Folderspec & " ist nicht vorhanden."
    Set FSO = Nothing  
    Exit Sub  
  End If  
  StTyp = "xls" ' Dateityp
 'Dateien auslesen
  For Each FI In FSO.GetFolder(Folderspec).Files           ' Schleife über alle Dateien
   'Dateityp feststellen
    If UCase(FSO.GetExtensionName(FI)) = UCase(StTyp) Then    
      Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1) = FI  'anpassen
    End If  
  Next
  Set FSO = Nothing  
End Sub  


mfg Anton
Anzeige
Test oT
13.07.2011 18:14:22
Anton
oT
AW: Test oT
13.07.2011 18:41:19
Giuseppe
Hallo Anton
Habe dein Makro eingefügt, ergänzt und vielfach getestet.
Es funktioniert einwandfrei!
Vielen Dank für deine Hilfe!
Grüsse
Giuseppe

11 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige