AW: Fragestellung noch mal vereinfacht
28.03.2009 12:53:17
Tino
Hallo,
ich würde ihm diesen Code geben.
Bei dem Kommentar weitere Eigenschaften, sind Beispiel um weitere Eigenschaften auszulesen.
Aber zum Glück bist Du in VBA Gut. ;-)
Dim ErsteZelle As Range
Sub Read_Write_Files_In_Folder()
Range("A2", Cells(Rows.Count, 1)).Value = ""
'erste Zelle, ab welcher Zelle einfügen?
Set ErsteZelle = Range("A2")
With Application
.StatusBar = "Lese Daten, bitte warten..."
.ScreenUpdating = False
'1.Parameter Ordner, wo soll gesucht werden?
'2.Parameter Datei,* als Platzhalter verwenden,Optional leer ist alle
'3.Parameter mit Unterordner = True, Optional False ist ohne
'4.Parameter kompl. Pfad ausgeben = True, Optional nur Dateiname = False
ListFilesInFolder "G:\PRJ", "*Schnittstellenliste.xls", True, True
'Spaltenbreide optimieren
Columns(ErsteZelle.Columns).AutoFit
.ScreenUpdating = True
.StatusBar = False
End With
End Sub
Sub ListFilesInFolder(SourceFolderName As String, Optional DateiFormat As String = "*.*", Optional IncludeSubfolders As Boolean = False, Optional FolderName As Boolean = False)
Dim FSO As Object, SourceFolder As Object, SubFolder As Object
Dim FileItem
Dim Status As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.GetFolder(SourceFolderName)
On Error GoTo Err_Zugriff: 'sollte Ordner geschützt sein
'*******************************weitere Eigenschaften ********
'Name: FileItem.Name
'Pfad mit Dateiname: FileItem.Path
'Dospfadname: FileItem.shortpath
'Dosname: FileItem.shortname
'Pfad: FSO.GetParentFolderName (FileItem)
'Laufwerk: FSO.GetDriveName (FileItem)
'Typ: FileItem.Type
'Erstellt am: FileItem.DateCreated
'Letzter Zugriff: FileItem.DateLastAccessed
'Letzte Änderung: FileItem.DateLastModified
'Grösse in Bytes: FileItem.Size
'Attribut: FileItem.Attributes
'
'Bei den Attributen haben die Zahlen folgende Bedeutung:
'1 = schreibgeschützt
'2 = versteckt
'4 = System
'8 = Laufwerk
'16 = Ordner
'32 = Archiv
'64 = Verknüpfung
'128 = komprimiert (WinNT)
'***************************************************************
For Each FileItem In SourceFolder.Files
If LCase(FileItem) Like LCase(DateiFormat) Then
ErsteZelle.Value = IIf(FolderName, FileItem, Right$(FileItem, Len(FileItem) - InStrRev(FileItem, "\")))
Set ErsteZelle = ErsteZelle.Offset(1, 0)
End If
Next FileItem
If IncludeSubfolders Then
For Each SubFolder In SourceFolder.SubFolders
ListFilesInFolder SubFolder.Path, DateiFormat, IncludeSubfolders, FolderName
Next SubFolder
End If
Err_Zugriff:
Set FileItem = Nothing: Set SourceFolder = Nothing: Set FSO = Nothing
End Sub
Gruß Tino