Dateien auslesen

Hallo,

um Dateinamen aus einem Ordner auszulesen mit EXCEL-VBA auszulesen, habe ich mir das unten stehende Programm aus einem Forum kopiert. Den Pfad habe ich auf ein Testverzeichnis geändert um es zu testen. Das Programm läuft wohl, aber es erfolgt keine Ausgabe.

Ich habe gedacht ich weiß was das Programm macht, jetzt bin ich mir nicht mehr so sicher. Ist für euch ersichtlich was das Programm macht und wo es das Ergebnis abspeichert?

Grüße

Max

Option Explicit

Dim FSO, FO, FU, F, FI
Dim lRow As Long
Dim iCol As Integer

Public Sub Ordner_Dateien_Auflisten()
Set FSO = CreateObject(„Scripting.FileSystemObject“)
GetSubFolders_Files „C:\Temp“ ’ anpassen
End Sub

Function GetSubFolders_Files(pfad)
Set FO = FSO.GetFolder(pfad)
Set FU = FO.SubFolders
On Error Resume Next
For Each F In FU
lRow = lRow + 1
iCol = iCol + 1
Cells(lRow, iCol) = F.Name
Cells(lRow, iCol).Font.Bold = True
For Each FI In FO.Files
Cells(lRow + 1, iCol) = FI.Name
lRow = lRow + 1
Next
GetSubFolders_Files F.Path
Next
iCol = iCol - 1
End Function

Grüezi Max

Mit welcher Excel-Version arbeitest Du denn?

Ab xl2007 wird das FSO meines Wissens nicht mehr unterstützt.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

um Dateinamen aus einem Ordner auszulesen mit EXCEL-VBA
auszulesen, habe ich mir das unten stehende Programm aus einem
Forum kopiert. Den Pfad habe ich auf ein Testverzeichnis
geändert um es zu testen. Das Programm läuft wohl, aber es
erfolgt keine Ausgabe.

Hallo Max,

zum Testen ist es kontraproduktiv On Error Resume Next zu codieren.
Denn ich/man will ja wissen wo es kracht und warum.
Dann mit F5, F8 "arbeiten um die Fehlerstelle zu finden.

Nach der Testphase kann man ja gezielt On Error Resume Next oder
andere Fehlerbehandlungsroutinen einbauen.

Zu FSO und deiner Anfrage, schau mal diese Anfrage.

Ich hab mir jetzt nicht die zip von Hajo heruntergeladen,
da ist eine xlsm und eine xls drinne, Schau halt ob du die
für dein Anliegen nutzen kannst, wenn nicht zeige mal hier den Code.

Gruß
Reinhard

Vielen Dank für eure Antworten und die nützlichen Infos zum Testen.

„On Error Resume Next“ ist zum Testen wohl wirklich ungeeignet :smile:.

Aber zurück zu meiner Frage wegen der Ausgabe. Diese erfolgt nur über die Zeilen

Cells(lRow, iCol) = F.Name
Cells(lRow, iCol).Font.Bold = True

und

Cells(lRow + 1, iCol) = FI.Name

Es wird also in das aktive Sheet von Excel gespeichert. Sonst nimmt das Programm keine Änderungen an anderen Dateien vor, oder?

Beste Grüße

Max

Hallo Thomas,

ich arbeite mit Excel 2007.

Gestern habe ich aber ein Programm mit einem „Scripting.FileSystemObject“
zum laufen gebracht.

Allerdings hatte ich auch die Microsoft-Scripting-Runtime-Bibliothek unter „Extras“ -> „Verweise“ aktiviert. Eventuell war dies unter den alten Excelversionen standardmäßig aktiviert und in Excel 2007 nicht.
Ist aber nur eine Vermutung von mir. Kann das sein?

Gruß

Cells(lRow, iCol) = F.Name
Cells(lRow, iCol).Font.Bold = True
Cells(lRow + 1, iCol) = FI.Name

Es wird also in das aktive Sheet von Excel gespeichert. Sonst
nimmt das Programm keine Änderungen an anderen Dateien vor,
oder?

Hallo Max,

das ist richtig.
Sicherer wird das so:

with worksheets("Tabelle1")
 .Cells(lRow, iCol).value = F.Name
 .Cells(lRow, iCol).Font.Bold = True
 .Cells(lRow + 1, iCol).value = FI.Name
End with

oder:

with Workbooks("MeineMappe.xls").worksheets("Tabelle1")
 .Cells(lRow, iCol).value = F.Name
 .Cells(lRow, iCol).Font.Bold = True
 .Cells(lRow + 1, iCol).value = FI.Name
End with

Gruß
Reinhard

1 Like

Nochmals Danke für die Antwort.