Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Code anpassen

Forumthread: VBA: Code anpassen

VBA: Code anpassen
07.08.2024 10:59:03
Fritz_W
Hallo Forumsbesucher
mit dem nachstehenden Code liste ich im aktuellen Tabellenblatt, die Dateien des im Code festgelegten Ordners auf.
Ich würde gerne mit einem geänderten Code erreichen, dass der Pfad mit dem auszulesenden Ordner nicht direkt im Makro festgelegt wird, sondern im aktuellen Tabellenplatz in der Zelle H1 einzugeben ist. Sollte das festgelegte Verzeichnis (Ordner) nicht existieren, sollte eine entsprechende Meldung ausgegeben werden.

Für eure Unterstützung im Voraus besten Dank

mfg
Fritz

Hier der aktuelle Code:

Sub Dateien_eines_Ordners_auflisten()

Dim lngZeile As Long
Dim objFilesystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object

Set objFilesystem = CreateObject("scripting.FileSystemObject")
Set objVerzeichnis = objFilesystem.GetFolder("D:\Fritz\Videos Tiere")
Set objDateienliste = objVerzeichnis.Files

lngZeile = 2

For Each objDatei In objDateienliste
If Not objDatei Is Nothing Then
ActiveSheet.Cells(lngZeile, 2) = objDatei.Name
lngZeile = lngZeile + 1
End If
Next objDatei

End Sub

Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Code anpassen - Nachtrag
07.08.2024 11:01:45
Fritz_W
Tabellenplatz sollte natürlich Tabellenblatt heißen
AW: VBA: Code anpassen
07.08.2024 11:21:49
Uduuh
Hallo,
Set objFilesystem = CreateObject("scripting.FileSystemObject")

On Error Resume Next
Set objVerzeichnis = objFilesystem.GetFolder(Range("H1"))
On Error GoTo 0
If objVerzeichnis Is Nothing Then
MsgBox "Pfad gibt es nicht"
Exit Sub
End If

Gruß aus'm Pott
Udo
Anzeige
AW: VBA: Code anpassen
07.08.2024 11:36:20
Fritz_W
Hallo Udo,

vielen Dank für Deine Hilfe.
Mein Test hat leider ergeben, dass keine Dateien in das aktuelle Tabellenblatt geschrieben werden. Wenn der Pfad nicht existiert, erscheint jedoch der Hinweis.

Gruß
Fritz
AW: VBA: Code anpassen
07.08.2024 11:29:29
ralf_b
oder du nutzt die vom Filesystemobject bereitgestellte Methode Folderexists

 If Range("H1") = "" Then MsgBox "Zelle leer": Exit Sub

If Not objFilesystem.FolderExists(Range("H1").Value) Then MsgBox "gibbet nich": Exit Sub

Set objVerzeichnis = objFilesystem.GetFolder(Range("H1").Value)
Anzeige
AW: VBA: Code anpassen
07.08.2024 16:52:03
GerdL
Moin Fritz!
Teste mal.
Sub Dateien_eines_Ordners_auflisten_2()


Dim lngZeile As Long
Dim objFilesystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object
Dim vntOUT()

Set objFilesystem = CreateObject("scripting.FileSystemObject")

If objFilesystem.folderexists(Worksheets("Tierfilme").Range("H1")) Then
Set objVerzeichnis = objFilesystem.GetFolder(Worksheets("Tierfilme").Range("H1"))
Else
If Worksheets("Tierfilme").Range("H1") = "" Then
MsgBox "H1 ist leer"
Exit Sub
Else
MsgBox "Pfad gibt es nicht"
Exit Sub
End If
End If

Set objDateienliste = objVerzeichnis.Files
If objDateienliste.Count = 0 Then
MsgBox "Der Ordner ist leer"
End If

lngZeile = 1
Worksheets("Tierfilme").Columns(2).ClearContents
ReDim vntOUT(1 To objDateienliste.Count, 1 To 1)

For Each objDatei In objDateienliste
vntOUT(lngZeile, 1) = objDatei.Name
lngZeile = lngZeile + 1
Next objDatei

Worksheets("Tierfilme").Cells(2, 2).Resize(objDateienliste.Count) = vntOUT
End Sub


P.S.: Evtl. musst du noch vor das Worksheet ThisWorkbook. schreiben, also ThisWorkbook.Worksheets("Tierfilme"). _ _ _

Gruß Gerd
Anzeige
AW: VBA: Code anpassen
07.08.2024 17:07:41
Fritz_W
Hallo Gerd,

großartig, funktioniert wie gewünscht.
Du hast mir (wieder einmal) sehr geholfen.

mfg
Fritz
AW: VBA: Code anpassen
08.08.2024 16:07:07
Fritz_W
Hallo Forumsbesucher,
könnte man mit VBA den Dateien in Nachbarspalten auch Dateieigenschaften, v.a. das Aufnahmedatum (Erstellungsdatum) und ggf. die Länge (Dauer des Videos) zuordnen?

Mfg
Fritz



Anzeige
AW: VBA: Code anpassen
08.08.2024 18:21:20
Uduuh
Hallo,
aus meinem Archiv:
Public Sub Dateieigenschaften()

' Const FOLDER_PATH As String = "C:\test"
Const MAX_PROPERTYS As Long = 1000

Dim objShell As Object, objFolder As Object
Dim lngIndex As Long, lngRow As Long, lngMaxCount As Long
Dim vntName As Variant
Dim strTemp As String
'
Dim FOLDER_PATH
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
FOLDER_PATH = .SelectedItems(1)
End If
End With
'
If Dir$(FOLDER_PATH, vbDirectory) > vbNullString Then
'Debug.Print FOLDER_PATH
Application.ScreenUpdating = False

Cells.Clear

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(FOLDER_PATH)

For lngIndex = 0 To MAX_PROPERTYS
strTemp = objFolder.GetDetailsOf(vntName, lngIndex)
If strTemp = vbNullString Then
lngMaxCount = lngMaxCount - 1
Exit For
Else
Cells(1, lngIndex + 1).Value = strTemp
lngMaxCount = lngMaxCount + 1
End If
Next

Rows(1).Font.Bold = True
lngRow = 2

For Each vntName In objFolder.Items
For lngIndex = 0 To lngMaxCount
Cells(lngRow, lngIndex + 1).Value = _
objFolder.GetDetailsOf(vntName, lngIndex)
Next
lngRow = lngRow + 1
Next

Columns.AutoFit
Application.ScreenUpdating = True

Else
MsgBox "Der Ordner " & FOLDER_PATH & " wurde nicht gefunden!", _
vbExclamation, "weise hin..."
End If
End Sub

Gruß aus'm Pott
Udo
Anzeige
AW: VBA: Code anpassen
08.08.2024 19:57:51
Fritz_W
Hallo Udo,

super, vielen Dank, das sind ja sämtliche Eigenschaften und somit ein super Ansatz.
Ich würde jetzt gerne die Eigenschaften aus Spalte E (Erstelldatum) und Spalte AB (Länge) so in den Code von Gerd einbauen, dass diese beiden Dateieigenschaften in den Spalten rechts neben dem Dateinamen aufgelistet werden. Werde ich aber ohne weitere Hilfe kaum hinbekommen.
Stelle deshalb den Thread auf offen.

mfg
Fritz
Anzeige
AW: VBA: Code anpassen
07.08.2024 11:58:57
Fritz_W
Hallo Ralf,

vielen Dank, jetzt funktioniert es wie gewünscht.
Vermutlich hab ich Udos Code nicht korrekt eingebaut.

mfg
Fritz

AW: VBA: Code anpassen
07.08.2024 12:04:40
Fritz_W
Hallo Ralf,

wenn allerdings H1 leer ist oder der eingegebene Pfad nicht existiert erfolgt nicht die Ausgabe über die MsgBox sondern jeweils eine Fehlermeldung.
Mach ich was falsch?

mfg
Fritz
Anzeige
AW: VBA: Code anpassen
07.08.2024 13:03:27
Uduuh
Hallo,
Sub Dateien_eines_Ordners_auflisten()


Dim lngZeile As Long
Dim objFilesystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object
Dim vntOUT()

Set objFilesystem = CreateObject("scripting.FileSystemObject")

If objFilesystem.folderexists(Range("H1")) Then
Set objVerzeichnis = objFilesystem.GetFolder(Range("H1"))
Else
If Range("H1") = "" Then
MsgBox "H1 ist leer"
Exit Sub
Else
MsgBox "Pfad gibt es nicht"
Exit Sub
End If
End If

Set objDateienliste = objVerzeichnis.Files
If objDateienliste.Count = 0 Then
MsgBox "Der Ordner ist leer"
End If

lngZeile = 1
Columns(2).ClearContents
ReDim vntOUT(1 To objDateienliste.Count, 1 To 1)

For Each objDatei In objDateienliste
vntOUT(lngZeile, 1) = objDatei.Name
lngZeile = lngZeile + 1
Next objDatei

Cells(2, 2).Resize(objDateienliste.Count) = vntOUT
End Sub
Anzeige
AW: VBA: Code anpassen
07.08.2024 13:11:37
Fritz_W
Hallo Udo

vielen Dank, Klasse, jetzt funktioniert es wie gewünscht.

mfg
Fritz
AW: VBA: Code anpassen
07.08.2024 14:49:33
Fritz_W
Hallo VBA-Spezialisten,

nachdem Udo meine Vorstellungen so perfekt umgesetzt hat, ist es mir schon etwas peinlich noch einmal nach einer möglichen Anpassung zu fragen.
Wenn ich das hier jetzt trotzdem tue, hoffe ich gleichzeitig, dass dies möglicherweise kein allzu großer Umbau von Udos Code erfordert.
Wenn man das Makro aus einem anderen Tabellenblatt ausführen könnte, wäre das für mich von Vorteil.
Aufgelistet sollten die Dateien des auszulesenden Ordners im Tabellenblatt "Tierfilme" werden. Die Angabe des Pfads zum auszulesenden Ordner steht in Zelle H1 der Tabelle "Tierfilme".

Schon jetzt vielen Dan für euer Verständnis verbunden mit dem nochmaligen Hinweis, dass die Umsetzung nicht allzu viel Arbeit erfordert.

mfg
Fritz
Anzeige
AW: VBA: Code anpassen
07.08.2024 16:04:32
ralf_b
es lebe der Udo ... tralala. selbst wenn du nur mit dem Rekorder Code erzeugst, könnte man meinen das du schon weist das man vor die Zellreferenz noch das Worksheet schreibt wenn man aus einem Modul heraus auf das richtige Blatt verweisen will.
AW: VBA: Code anpassen
07.08.2024 16:29:03
Fritz_W
Hallo Ralf,

da hast Du mich aber überschätzt.
Jetzt weiß ich aber, dass sogar der Level "VBA nur mit Makrorekorder" für mich wohl zu hoch ist.
Aber auch Dein Hinweis reicht nicht aus, um mir auf die Sprünge zu helfen.
Wenn Du mir helfen willst, muss Du noch die Stellen im Code benennen, die geändert werden müssen, worüber ich mich freuen würde.

Dafür schon Dank im Voraus

mfg
Fritz
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige