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

Dateien per VBA auslesen

Dateien per VBA auslesen
30.01.2019 01:45:29
F.
Hallo zusammen!
Um eine größere Menge an Filmen und Musik Dateien in Excel zu archivieren möchte ich diese mit VBA mit den gebräuchlichsten Eigenschaften von der Festplatte auslesen und in einer Excel Tabelle abspeichern. Ich habe zwar ein VBA Makro, das aber nur die einfachsten Eigenschaften wie: "Pfad, Name, Ordner, Datum / Uhrzeit, Größe, Erstelldatum / Uhrzeit, Änderungsdatum / Uhrzeit" mir ausgibt. Gerade für die Filme und die Musik Dateien wäre es aber natürlich vorteilhafter, wenn man da auch die Länge der Spiel- bzw. Laufzeit mit auslesen und dazu abspeichern könnte. Ideal wäre natürlich noch, wenn man das Makro dann je nach Bedarf mit den gebräuchlichsten Eigenschaften so nach und nach ergänzen könnte. Ich suche schon mehrere Stunden nach einer geeigneten Lösung, bin aber eher am verzweifeln und wie üblich seid Ihr im Forum wieder mal meine letzte Rettung. Hier im Forumsarchiv habe ich zwar vieles gesehen, aber das geeignete war für mich nicht dabei. Außer einem Makro "Dateieigenschaften() 'von k.rola". Aber da sind alle Dateieigenschaften vorhanden, die im Explorer zur Verfügung stehen, das ist wieder zu viel des Guten. Also, vorab schon einmal vielen Dank für Euere Hilfe.
Viele Grüße
Frieder

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien per VBA auslesen
30.01.2019 09:09:01
fcs
Hallo Frieder,
das Makro von k.rola wäre aber der richtige Startpunkt. Von allem etwas weglassen ist meist nicht so schwierig.
Man muss dann "nur" die Werte in den nicht gewünschten Spalten überspringen und wahrscheinlich den Spaltenzähler anpassen.
Also poste mal das Makro oder den Link ins Archiv.
Danach schaun mer mal was geht.
LG
Franz
AW: Dateien per VBA auslesen
30.01.2019 09:20:39
Marco
Hallo Frieder,
das war auch etwas mit dem ich mich gerade beschäftigt habe. Ich habe die benötigten Funktionen soweit isoliert dass ich Sie einfach anpassen und einsetzen kann.
Bei der Variable DatAttribut musst Du natürlich das Attribut angeben, dass Du ausgeben möchtest (0-33).
Am einfachsten ist das, wenn Du das Makro von k.rola ausführtsz und dann die Spalte abzählst oder Dich halt durchprobierst.
Sub DateiattributLesen()
Dim shell As Object
Dim DatVerzeichnis As Object
Dim DatAuswahl As Object
Dim DatAttribut As Integer
'Windows Shell Objekt
Set shell = CreateObject("Shell.Application")
'Auswahl des Dateiattributes (0-33)
DatAttribut = 1                                            '
'Dateipfad angeben
Set DatVerzeichnis = shell.Namespace("H:\")
'Datei angeben
Set DatAuswahl = DatVerzeichnis.ParseName("inhalt.pdf")  ' File Item (Datei)
Debug.Print DatAttribut & " - " & DatVerzeichnis.GetDetailsOf(Null, DatAttribut) & ": " &  _
DatVerzeichnis.GetDetailsOf(DatAuswahl, DatAttribut)
End Sub
VG
Marco
Anzeige
AW: Dateien per VBA auslesen
30.01.2019 11:44:55
F.
Hallo Franz,
zuerst mal Danke für Deine Antwort. Berichtigen möchte ich auch noch meine Excel Version, es ist Version 2010 und nicht die Vers. 10 XP. Soviel dazu!!!
Zu Deinem Vorschlag habe ich mal den Link aufgeführt. Wobei es im Prinzip 2 Versionen gibt. Diese hier hat die gängigen Eigenschaften (33 Stück). Dann gibt es noch eine mit 256 Eigenschaften, die natürlich alles an Eigenschaften abdeckt, die es nur abzudecken gibt. Wie ich schon erwähnt habe, wäre es für mich und für alle Anderen Forum Besucher ideal wenn es die Möglichkeit gebe, ganz gezielt seine Eigenschaften "herauszupicken", die er gerade für seine Arbeit benötigt.
https://www.herber.de/forum/archiv/512to516/515483_Dateieigenschaften_auslesen.html
Viele Grüße
Frieder
Anzeige
AW: Dateien per VBA auslesen
31.01.2019 20:25:07
fcs
Hallo Frieder,
man kann es dann wie folgt umsetzen, wenn nur bestimmte Eigenschaften angezeigt werden sollen.
LG
Franz

Sub Dateieigenschaften_alle()
Call Dateieigenschaften_0_bis_33("C:\Users\public\Documents", NrIndex:=True)
End Sub
Sub Dateiegen_schaften_medien()
Call Dateieigenschaften_0_bis_33("C:\Users\public\Documents", _
varEigenschaften:=Array(0, 3, 12, 13, 14, 15, 16, 17, 18), NrIndex:=False)
End Sub
Sub Dateieigenschaften_0_bis_33(ByVal STRFOLDER As Variant, Optional varEigenschaften As  _
Variant, _
Optional NrIndex As Boolean = False)
'STRFOLDER:  Ordner in dem die Eigenschaften der Dateien  ausgelesen werden sollen
'varEigenschaften: Array mit den Index-Nummern der Eigenschaften, die ausgelesen werden sollen
'wird der parameter weggelassen, werden alle Eigenschaften ausgelesen
'NrIndex: optional, wenn True, dann werden in Zeile 1 die Index-Nrn der Eigenschaften  _
ausgegeben
Dim objShell As Object, objFolder As Object
Dim x As Byte, intColumn As Integer, lngRow As Long
Dim varName, arrHeaders(34)
Dim varWert
If Dir(STRFOLDER, 16) = "" Then
MsgBox "Der Ordner " & STRFOLDER & " wurde nicht gefunden!" & Space(10), 64, "weise hin... _
Exit Sub
End If
On Error Resume Next
ActiveSheet.UsedRange.Clear
Application.ScreenUpdating = False
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(STRFOLDER)
intColumn = 0
'Index-Nummer und Namen der Dateieigenschaften
For x = 0 To 33
If fncCheck(IIf(VBA.IsMissing(varEigenschaften), -1, x), varEigenschaften) Then
intColumn = intColumn + 1
arrHeaders(x) = objFolder.GetDetailsOf(varName, x)
If NrIndex = True Then
Cells(1, intColumn) = x
Cells(2, intColumn) = arrHeaders(x)
Else
Cells(1, intColumn) = arrHeaders(x)
End If
End If
Next
If NrIndex = True Then
Rows(2).Font.Bold = True
lngRow = 3
Else
Rows(1).Font.Bold = True
lngRow = 2
End If
For Each varName In objFolder.Items
intColumn = 0
For x = 0 To 33
If fncCheck(IIf(IsMissing(varEigenschaften), -1, x), varEigenschaften) Then
intColumn = intColumn + 1
varWert = ""
varWert = objFolder.GetDetailsOf(varName, x)
Select Case x
Case 3, 4, 5 'Datum Zeit
If IsDate(varWert) Then varWert = CDate(varWert)
Case 12 'Aufnahmedatum (enthält sonderzeichen deshalb keine echtes Exceldatum
If IsDate(varWert) Then
varWert = CDate(varWert)
End If
Case Else
End Select
Cells(lngRow, intColumn) = varWert
End If
Next
lngRow = lngRow + 1
Next
Columns.AutoFit
Application.ScreenUpdating = True
End Sub
Private Function fncCheck(ByVal x As Integer, Optional varWerte) As Boolean
Dim intJ As Integer
fncCheck = False
If x 

Anzeige
AW: Dateien per VBA auslesen
01.02.2019 10:57:33
F.
Hallo Franz,
zuerst mal Danke für Dein Super Makro. In der Art habe ich es mir vorgestellt. Jetzt kann ich je nach Ordner der auszulesen ist, mir die dementsprechenden Eigenschaften vorab schon mal gezielt aussuchen.
Wie üblich ist es meistens, dass einem immer noch was einfällt, wo man noch etwas verbessern könnte. In diesem Falle wäre es schön und einfacher, wenn beim Aufruf des dementsprechenden Makros, eine Auswahlmöglichkeit des zu verarbeitenden Ordners ausgewählt werden könnte, ohne den Umweg über den Eintrag im VBA Makro machen zu müssen. Das "Düpfele auf dem i" wäre natürlich noch, wenn ich eine Auswahlmöglichkeiten der Eigenschaften hätte. Ich bräuchte dann nur noch meine passenden Eigenschaften auswählen und schon wäre alles erledigt. Schön wäre es, wenn man das realisieren könnte!!!
Auf jeden Fall mal nochmals vielen Dank
und viele Grüße
Frieder
Anzeige
AW: Dateien per VBA auslesen
04.02.2019 17:38:14
fcs
Hallo Frieder,
auf einem Langstreckenflug von Peking nach Frankfurt kommt man schon mal auf die Idee über deine Wunschliste nachzudenken.
Ergebnis fimdest du in der hochgeladenen Datei.
https://www.herber.de/bbs/user/127411.xlsm
LG
Franz
AW: Dateien per VBA auslesen
05.02.2019 11:35:18
F.
Hallo Franz,
ja, was so eine Nähe zum "Universum" alles bewerkstelligen kann. Die "göttlichen Eingebungen in der Höhe" haben Wunder bewirkt. (Spass muss sein!!!) Besser kann man es glaube ich, nicht machen. Deshalb mal vorab ein ganz besonderes Lob an dich. Ein kleiner Wermutstropfen hat die ganze Sache doch noch!!! Der Ordner wo ausgewählt wurde wird zwar ordnungsgemäß ausgelesen, aber die Unterordner werden zwar angezeigt, aber nicht ausgelesen!!! Da solltest Du mal nachschauen. Aber sonst alles wunderbar.
Viele Grüße
Frieder
Anzeige
AW: Dateien per VBA auslesen
06.02.2019 12:28:56
fcs
Hallo Frieder,
das Einlesen der Dateien in den Unterordner des gewählten Verzeichnissses hab ich in den Makros ergänzt.
Die Ordner selber werden in der Liste nicht mehr angezeigt.
Optional kannst die Unterverzeichnisse in einer separaten SPalte mit ausgeben.
https://www.herber.de/bbs/user/127456.xlsm
LG
Franz
AW: Dateien per VBA auslesen
06.02.2019 14:54:43
F.
Hallo Franz,
zuerst wieder mal recht herzlichen Dank für Deinen Einsatz. Mittlerweile nähern wir uns solangsam der "Eier legenden Wollmilchsau" an. Es sind noch ein paar Kleinigkeiten die noch zum "großen Wurf" fehlen und das wären die Anzeige des Laufwerk & Pfad Namen in der ersten Zeile, von dem die Ordner aus gelesen werden. Könnte man ja von der Verzeichnis Auswahl mit über nehmen (z. B. Pfad: d:\Filme\). Momentan bleibt ja der Unterverzeichnis-Ordner leer (es wird kein Laufwerk / Pfad angezeigt) wenn Ordner leer, oder auch Dateien darin vorhanden sind. Erst nach dem ersten Unterverzeichnis-Ordner wird der Name des selbigen angezeigt. Schön wäre es, wenn der komplette Pfadname angezeigt werden würde (d:\Filme\ etc.). Wegen der Übersichtlichkeit hätte ich auch noch einen Wunsch und zwar wenn man zwischen jeder Spalte eine Spalte mit "0,5" Breite einfügen könnte, würde das dann alles etwas übersichtlicher machen. Zu guter Letzt gäbe es noch eine Art von "Favoriten-Auswahl" der aufgerufenen Verzeichnisse / Ordner, so dass man direkt von dort seine Auswahl treffen könnte. Nur wenn der Aufwand nicht zu groß ist und sich so was überhaupt in so einem Projekt realisieren lässt. Soweit habe ich glaube ich momentan alles zusammen geschrieben, was es noch zu ändern gebe. Aber ein altes Programmierer Sprichwort heißt ja: "Ein Programm ist erst perfekt, wenn man es nicht mehr braucht". In diesem Sinne ... Vielen Dank im voraus ...
Viele Grüße
Frieder
Anzeige

10 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige