Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

DateiListe ohne Unterverzeichnis

DateiListe ohne Unterverzeichnis
Teck
Hallo Excel-Gemeinde,
folgendes Makro (Quelle unbekannt) liest aus einem auszuwählenden Ordner alle Dateien aus.
Dabei werden auch Unterverzeichnisse eingelesen.
Dieses möchte ich unterdrücken sodass nur die oberste Dateiebene abgefragt wird, doch leider fehlen mir die nötigen VBA-Kenntnisse dafür.

Option Explicit
Dim wksInhalt As Worksheet, vntFiles(), lngFiles As Long
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Sub DateiListe()
Dim FSO As Object, oFolder As Object
Dim strFolder As String
On Error GoTo FEHLER
Set wksInhalt = ThisWorkbook.Worksheets.Add
wksInhalt.name = "Dateiliste"
Set FSO = CreateObject("Scripting.FileSystemObject")
strFolder = GetDirectory
Worksheets("Projekt").Range("C1").Value = strFolder
If strFolder = "" Then
Worksheets("Projekt").Range("A1").Value = "x"
Exit Sub
End If
Set oFolder = FSO.getfolder(strFolder)
lngFiles = 1
With wksInhalt
.Cells.ClearContents
.Cells(1, 1) = "Ordner"
.Cells(1, 2) = "Name"
.Cells(1, 3) = "Tabellen"
.Range(.Cells(1, 1), .Cells(1, 3)).Font.Bold = True
End With
prcFiles oFolder
prcSubFolders oFolder
With wksInhalt
.Range(.Cells(2, 1), .Cells(lngFiles, UBound(vntFiles, 1))) = _
WorksheetFunction.Transpose(vntFiles)
.Activate
End With
FEHLER:
End Sub
Private Sub prcSubFolders(oFolder)
Dim oSubFolder As Object
For Each oSubFolder In oFolder.subfolders
prcFiles oSubFolder
prcSubFolders oSubFolder
Next
End Sub
Private Sub prcFiles(oFolder)
Dim oFile As Object, wkb As Workbook, wks As Worksheet
For Each oFile In oFolder.Files
If Right(oFile, 4) = ".xls" Then
Set wkb = Workbooks.Open(oFile, False, True)
For Each wks In wkb.Worksheets
ReDim Preserve vntFiles(1 To 3, 1 To lngFiles)
vntFiles(1, lngFiles) = oFolder
vntFiles(2, lngFiles) = oFile.name
vntFiles(3, lngFiles) = wks.name
lngFiles = lngFiles + 1
Next wks
wkb.Close False
End If
Next oFile
End Sub
Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim Path As String
Dim R As Long, x As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(Msg) Then
bInfo.lpszTitle = "Wählen Sie bitte einen Ordner aus."
Else
bInfo.lpszTitle = Msg
End If
bInfo.ulFlags = &H1
x = SHBrowseForFolder(bInfo)
Path = Space$(512)
R = SHGetPathFromIDList(ByVal x, ByVal Path)
If R Then
pos = InStr(Path, Chr$(0))
GetDirectory = Left(Path, pos - 1)
Else
GetDirectory = ""
End If
End Function
Meine Recherche war leider ebenfalls nicht von Erfolg gekrönt :(
Sie hat nur ergeben, dass die Zeile
bInfo.ulFlags = &H1
in der Funktion "GetDirectory" die Unterverzeichnisse zurückgibt.
Wenn ich diese Zeile aus dem Makro entferne, erhalte ich aber leider nicht den gewünschten Effekt =(
Schonmal vielen Dank für jede Hilfe!
Liebe Grüße
Teck XL

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: DateiListe ohne Unterverzeichnis
29.09.2009 10:03:14
Rudi
Hallo,
kommentiere in Sub Dateiliste diese Zeile aus:
prcSubFolders oFolder
Gruß
Rudi
AW: DateiListe ohne Unterverzeichnis
29.09.2009 10:07:27
Teck
Hallo Rudi,
Tatsächlich! Diese Zeile habe ich leider übersehen :(
Hätte ich auch selber drauf kommen können...
Tut mir leid für die dumme Frage...
Vielen Dank für deine Hilfe
Liebe Grüße
Teck XL
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige