Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Dateinamen in Excel Tabellen auflisten
#1
Hallo,

vielleicht kann mir von Euch jemand helfen, folgende Aufgabe zu bearbeiten. Ich würde gerne automatisch (per Makro) die Dateinamen, Änderungsdatum und Dateigröße, welche im Windows Explorer beim Zugriff auf den jeweiligen Ordner aufgelistet werden, unter Angabe des jeweiligen Quellordners in Tabellen in Excel übernehmen (z.B. in die Spalten A bis C von Zeile 1 abwärts).
Antworten Top
#2
Hallo,

ich habe einen passenden Code gefunden (siehe unten). Folgende Fragen hätte ich dazu:

Wie kann man in diesem Code die Auswahl des Ordners per Inputbox integrieren (dzt. muss der Ordner fix im Code angegeben werden)? 
Wie kann man in diesem Code die Spalte, in die die Werte ausgegeben werden sollen, fix integrieren (z.B. Spalte B ab Zeile 1)?

Sub Ordner_Auslesen()

Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fdateien As Object
Dim strDat As String
Dim Zeile As Integer

Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.GetFolder("C:\Test")
Set fdateien = fVerz.Files

For Each fDatei In fdateien
    If InStr(fDatei, "") > 0 Then
        Zeile = Zeile + 1
        Cells(Zeile, 1) = fDatei.Name
    End If
Next fDatei

End Sub
Antworten Top
#3
Hi,

versuchs mal so:


Code:
Sub Ordner_Auslesen()

Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fdateien As Object
Dim strDat As String
Dim Zeile As Integer
Dim folder As String

Set fs = CreateObject("scripting.FileSystemObject")
folder = Application.InputBox("folder")
Set fVerz = fs.GetFolder(folder)
Set fdateien = fVerz.Files

For Each fDatei In fdateien
    If InStr(fDatei, "") > 0 Then
        Zeile = Zeile + 1
        Cells(Zeile, 2) = fDatei.Name  '2= Spalte B
    End If
Next fDatei

End Sub

Wobei die Lösung mit Inputbox natürlich fehleranfällig ist falls du da was falsches schreibst.
Mit freundlichen Grüßen  :)
Michael
Antworten Top
#4
Hi

"noch en Gedicht"     (Heinz Ehrhardt)


statt Cells(Zeile, 2) kannst du auch Cells(Zeile, "B") angeben. Dann siehst du direkt welche Spalte gemeint ist.

Codes zum Ordner auslesen gibt es hunderte, in allen Varianten. Mit und ohne Unter Ordner.
Hier mal ein Minimal Code den ich fand und den ich um File-Len + Datum erweitert habe.
Anstatt -InputBox- steht bei mir der Pfad + Ordnername in der Zelle C1 

'Die Minimalvariante um Datein eines Ordners zu lesen ist:
Sub myDir()
   Range("A1:C100") = Empty
   sPfad = ThisWorkbook.Path
      sPfad = "c:\tmp"   'oder
'      sPfad = Range("C1")
      temp = Dir(sPfad & "\*.*")
      Do While temp <> ""
      i = i + 1
      Cells(i, 1) = temp
      Cells(i, 2) = FileLen(sPfad & "\" & temp)
      Cells(i, 3) = FileDateTime(sPfad & "\" & temp)
      temp = Dir
      Loop
End Sub
Antworten Top
#5
Hallo,

danke Euch für die Vorschläge. Zur Auswahl des Ordners wäre statt der Input Box ideal wenn der Windows Explorer bei Makro Ausführung öffnen würde und die Datei direkt im Explorer ausgewählt werden könnte. Weiters wäre gut die Spalten (z.B. D/E/F) im Code festzulegen, welche jeweils an die aktuelle Situation angepasst werden könnten.
Antworten Top
#6
Hallo,

wie wäre es möglich den betroffenen Ordner zum Auslesen der Namen im Windows Explorer auszuwählen, ev. anhand von "With Application.FileDialog"? Wie würde dann z.B. der vorher angegebene optimierte Code von Gast123 aussehen?
Antworten Top
#7
Hallöchen,

vorhin hatte ich das in einem anderen Thread zur Dateiauswahl, hier nun das Beispiel zur Ordnerwahl:
Sub OrdnerWahl()
With Application.FileDialog(msoFileDialogFolderPicker)
   .InitialFileName = "G:\"
   .Title = "Ordnerauswahl"
   .ButtonName = "Übernehmen"
   .InitialView = msoFileDialogViewList
   If .Show = -1 Then
       strordner = .SelectedItems(1)
   End If
End With
MsgBox "Gewählter Ordner: " & strordner
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
Hallo Andre,

vielen Dank für Deine Info. Wie kann man den Ordner der mit "OrdnerWahl" ausgewählt wird im Code von Gast 123 (siehe Beitrag vorher) aufrufen?
Antworten Top
#9
Hallöchen,

das könnte man direkt in einem Makro verarbeiten oder auch so:

Modul Modul1
Sub OrdnerWahl() 
'MIt dem Ordnerauswahldialog aufrufen 
With Application.FileDialog(msoFileDialogFolderPicker) 
   'Startlaufwerk und Verzeichnis 
   .InitialFileName = "G:\" 
   'Dialogtitel 
   .Title = "Ordnerauswahl" 
   'Beschriftung des Buttons zum ausfuehren 
   .ButtonName = "Übernehmen" 
   'Anzeigeeinstellung 
   .InitialView = msoFileDialogViewList 
   'Wenn Auswahl erfolgt ist, dann 
   If .Show = -1 Then 
       'Ordnernamen übernehmen 
       myDir .SelectedItems(1) 
   'Ende Wenn Auswahl erfolgt ist, dann 
   End If 
'Ende Mit dem Ordnerauswahldialog aufrufen 
End With 
End Sub 
 
Sub myDir(ByVal sPfad As String) 
'Variablendeklaration 
'String, Integer 
Dim temp$, iCnt% 
'Bereich A1:C100 leeren 
Range("A1:C100") = Empty 
'ersten Dir-Eintrag abrufen 
temp = Dir(sPfad & "\*.*") 
'Schleife solange der Dir-Eintrag etwas enthaelt 
Do While temp <> "" 
  'Zeilenzaehler hochsetzen 
  iCnt = iCnt + 1 
  'Dateinamen in Spalte A = 1 uebernehmen 
  Cells(iCnt, 1) = temp 
  'Dateigroesse in Spalte B = 2 uebernehmen 
  Cells(iCnt, 2) = FileLen(sPfad & "\" & temp) 
  'Dateizeit in Spalte C = 3 uebernehmen 
  Cells(iCnt, 3) = FileDateTime(sPfad & "\" & temp) 
  'naechsten Dir-Eintrag abrufen 
  temp = Dir 
'Ende Schleife solange der Dir-Eintrag etwas enthaelt 
Loop 
End Sub 

.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#10
Hallo Andre,

vielen Dank für Deine Info, der Code funktioniert optimal!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste