suchen

05/09/2010 - 22:52 von Jakob Schwarz | Report spam
xp - 1 ordner - viele unterordnern
wie suche ich nach .xls dateien? dass alle angezeigt werden die exel sind
 

Lesen sie die antworten

#1 Peter Schleif
06/09/2010 - 06:26 | Warnen spam
Jakob Schwarz schrieb am 05.09.2010 22:52 Uhr:
xp - 1 ordner - viele unterordnern
wie suche ich nach .xls dateien? dass alle angezeigt werden die exel sind



dir /S /B /ON /A-D "E:\test\*.xls?" > liste.csv

Schreibt eine Liste aller Excel-Dateien im Ordner "E:\test" (inkl.
Unter-Ordner, Unter-Unter-Ordner, etc.) in eine Datei "liste.csv" im
aktuellen Ordner deiner DOS-Kommandobox. Diese CSV-Datei doppelklicken.


Die beiden unten stehenden Makros machen das gleiche in VBA. Die erste
Version reicht raus, wenn Du sicher bist, weniger Excel-Dateien zu haben
deine Excel-Version Zeilen hat. (Gilt übrigens auch für das DOS-Kommando
oben)

Ansonsten brauchst Du die zweite Version, die mit der Auflistung in der
jeweils nàchsten Spalte fortfàhrt, wenn das Ende einer Spalte erreicht ist.

Peter


Sub ExcelDateienSuchen1()
Dim arr As Variant

Const ORDNER = "E:\test"

CreateObject("Wscript.Shell").Run "cmd /U /C dir /S /B /ON /A-D """ & _
ORDNER & "\*.xls?"" > """ & Environ("TEMP") & "\temp.txt""", 0, True

arr =Split(CreateObject("Scripting.FileSystemObject").OpenTextFile( _
Environ("TEMP") & "\temp.txt", 1, False, True).ReadAll, vbCrLf)

Cells.Clear
[A1].Resize(UBound(arr) + 1) = WorksheetFunction.Transpose(arr)
[A:A].EntireColumn.AutoFit
End Sub


Sub ExcelDateienSuchen2()
Dim r As Range

Const ORDNER = "E:\test"

CreateObject("Wscript.Shell").Run "cmd /U /C dir /S /B /ON /A-D """ & _
ORDNER & "\*.xls?"" > """ & Environ("TEMP") & "\temp.txt""", 0, True

Application.ScreenUpdating = False
Cells.Clear
Set r = [A1]

With CreateObject("Scripting.FileSystemObject") _
.OpenTextFile(Environ("TEMP") & "\temp.txt", 1, False, True)

While Not .AtEndOfStream
r = .ReadLine
If r.Row < Rows.Count Then
Set r = r.Offset(1)
Else
Set r = r.EntireColumn.Cells(1, 2)
End If
Wend
End With

r.Worksheet.UsedRange.EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub

Ähnliche fragen