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
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
.
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 „Gefällt mir“
Nochmals Danke für die Antwort.