Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1520to1524
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

Reihenfolge beim Einlesen Ordnerinhalt ...

Reihenfolge beim Einlesen Ordnerinhalt ...
23.10.2016 15:54:55
Udo
hallo Forum ,
hatte vor zwei Tagen mit Martin's und Nepumuk's freundlicher Hilfe und ein paar Beispielen aus der Recherche folgende Datei erstellen können. Das hat sich damit eigentl. auch erledigt. Nun sollte ich das aber noch etwas modifizieren sozusagen.
Ich lese per Makro damit einen Ordner aus, und lasse mir die darin liegenden Dateien
in einer Spalte listen nach und nach. In dem Ordner den ich damit auslese liegen nur kleine Videosequenzen unserer Messungen drinnen - im .h264 Format.
Wir haben bei uns eine Software die alle Messwerte generiert und diese werden anschl. von einer Exceltabelle ausgelesen und regelmässig aktualisiert usw.
In dieser Exceltabelle haben wir nun noch eine Spalte vorgesehen, in die das entspr. Video ( dessen Namen ) der Messung eingetragen werden soll. Das war der Grund für das Einlesemakro ...
Und nun aber dabei noch wichtig !! Die Auflistung aller Daten aus der SQL DAtenbank, wo heraus die Werte in Excel eingeladen werden , bzw. Excel diese dort abgreift ist immer entspr. dem Änderungsdatum dort runterwärts aufgeführt !! also immer die Datum & Zeit aktuellsten Werte und Dateien stehen immer unten, und so erweitert sich die Datei eben von Messung zu Messung immer und neuen Zeilenwerte runterwärts in meiner Excelliste. Eigentl. easy soweit.
Das Ding ist die Videofiles liegen im entspr. Ordner drin und wenn man Sie dort im Explorer nach Änderungsdatum sortiert, bzw. anzeigen lässt , würde sich die Reihenfolge auch mit der der Exceltabelle decken, ABER leider liest mir eben das Makro ( aus dem Beispiel hier ) die Videofiles in Alphabethischer Reihenfolge aus, hmmmmm dann passt die Zuordnung so eben nicht mit der Excelliste die nachher alles verwalten soll.
Ich bräuchte also bei folgendem Verhalten des Codes ( in der Beispieltabelle ) bitte noch Hilfe bzgl. der Sortierreihenfolge.
Ich selbst bin leider nicht so versiert im Aufbau der Codes, benötige dabei bitte bitte nochmal eure Hilfe.
Oder könnte man beim Einlesen in eine zweite Spalte zu den Videofiles noch das Aufnahmedatum einlesen, sodass ich später danach die beiden Spalten sortieren könnte ? ( wenn ja, wie sähe dieser Zusatz dann aus ? )
Hier wäre mal die Beispieldatei um die es geht:
https://www.herber.de/bbs/user/108968.xlsm
Wir haben übrigens Office 2013 bei der Arbeit ...
Hoffe ich könnt mir dabei helfen, wäre euch sehr sehr dankbar
LG udo

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Reihenfolge beim Einlesen Ordnerinhalt ...
23.10.2016 17:06:54
fcs
Hallo Udo,
ich hab dir ein das Liste2-Makro mal angepasst, so dass zusätzlich das Speicherdatum (Datum/Zeit) der Datei in Spalte H ausgegben wird und danach sortiert wird.
Das Aufnahmedatum wird schwieriger, da muss man sich erst einaml tief in die Datei-Eigenschaften reinknieen, und dann die entsprechende Objekteigenschaft auslesen.
Ähnlich kannst du natürlich auch dasa andere Makro anpassen.
Gruß
Franz
Sub Liste_2()
'Beispiel aus der Herber Suche und bereits so gut ich konnte angepasst an meine Bedürfnisse
Dim strPath As String, strFile As String, strTab As String, strRef As String
Dim lngNext As Long
Application.ScreenUpdating = False
strPath = "C:\Test_Videos" 'Verzeichnis
strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
strTab = "Videoliste"  'Tabellenblatt Name
lngNext = 6           'ab welcher Zeile wird eingefügt
'strFile = Dir(strPath & "*.xls*", vbNormal)
strFile = Dir(strPath & "*.h264*", vbNormal)
On Error Resume Next
With Sheets("Videoliste") 'Tabellenblatt Name
If .Cells(.Rows.Count, 7).End(xlUp) >= 6 Then
.Range(.Cells(6, 7), .Cells(.Rows.Count, 7).End(xlUp).Offset(0, 1)).Clear
End If
Do While strFile  ""
.Cells(lngNext, 7) = strPath & strFile
.Cells(lngNext, 8) = VBA.FileDateTime(strPath & strFile) '.Value
lngNext = lngNext + 1
strFile = Dir
Loop
'Nach Datum in Spalte H (8) sortieren
If lngNext > 7 Then 'zum Sortieren müssen mindestens 2 Einträge vorhanden sein
With Range(.Cells(6, 7), .Cells(lngNext - 1, 8))
.Sort key1:=.Cells(1, 2), order1:=xlAscending, Header:=xlNo
End With
End If
End With
Ende:
Application.ScreenUpdating = True
End Sub

Anzeige
Jaaaaaa, oberperfekt !! Tausend Dank !! ....
23.10.2016 20:45:35
Udo
Ich danke Dir fürs anpasssen , aber auch Martin und Nepumuk für die ersten Beiwürfe.
Jetzt bekomm ichs vollends hin ...
Das funktioniert schon prima, ich lass mir die Daten so einlesen, und binde ins Makro anschl. noch eine Sortierung nach Datum u Zeit mit ein in den beiden Spalten, dann sollte es zu den restl. DAten dann passen ...
Echt stark ! wirklich herzlichen Dank nochmals !!!
Ihr seit spitze Jungs
Schönen Dank und Abend
udo
... doch noch eine Frage Franz ...
24.10.2016 14:49:11
Udo
Hallo Franz, eine Frage hätte ich nun doch nochmal...
nachdem ich den Code heute aus der Testdatei von WE nun heute in unsere eigentl. Exceldatei
übernommen habe, funktioniert auch da alles soweit prima, er macht alles wie im letzten Stand
codiert ...
Nur wir haben bereits an die 800+ Videofiles der Messungen im Ordner den ich damit auslese.
Dann dauert es doch lange bis er alles eingelesen hat, was mal nicht so schlimm wäre, jedoch immer
15 Min zum Einlesen ist für jedesmal dann doch arg lang ... es kommen da täglich so 5 - 10 Messungen dazu, könnte man die Abfrage noch so modifizieren, dass er nur die neueren Daten, ab dem Letzten Eintrag in der Einlesespalte dann einliest.
Bezugs- oder Vergleichswert wäre in dem Fall das Änderungsdatum der Datei, also wann Sie erstellt wurde Datum & Zeit, diese können wir ja mit dem Marko schon prima einlesen ...
Kann das Makro zuvor den letzten Datum & Zeitwert der Spalte unten prüfen, und den als Vergleichswert nehmen wenn dann im Ordner aus dem eingelesen werden soll weitere Videoaufnahmen auftauchen, deren Aufnahmedatum über dem der Spalte ( letzter Eintrag ) liegt ?
Meinst du das bekommt man noch hin ?
Sorry, mir fiel das jetzt erst auf nach dem Integrieren in die eigentl. Datei.
LG udo
Anzeige
AW: ... doch noch eine Frage Franz ...
24.10.2016 15:08:27
Rudi
Hallo,
die 15 Min beruhen eher auf dem zeilenweisen Eintragen in die Tabelle.
Sub Liste_2()
'Beispiel aus der Herber Suche und bereits so gut ich konnte angepasst an meine Bedürfnisse
Dim strPath As String, strFile As String, strTab As String, strRef As String
Dim lngNext As Long
Dim objFiles As Object
Application.ScreenUpdating = False
Set objFiles = CreateObject("scripting.dictionary")
strPath = "C:\Test_Videos" 'Verzeichnis
strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
strTab = "Videoliste"  'Tabellenblatt Name
lngNext = 6           'ab welcher Zeile wird eingefügt
strFile = Dir(strPath & "*.h264*", vbNormal)
Do While Len(strFile)
objFiles(strPath & strFile) = FileDateTime(strPath & strFile)
strFile = Dir
Loop
With Sheets(strTab) 'Tabellenblatt Name
If .Cells(.Rows.Count, 7).End(xlUp).Row >= 6 Then
.Range(.Cells(6, 7), .Cells(.Rows.Count, 7).End(xlUp).Offset(0, 1)).Clear
End If
.Cells(lngNext, 7).Resize(objFiles.Count) = WorksheetFunction.Transpose(objFiles.keys)
.Cells(lngNext, 8).Resize(objFiles.Count) = WorksheetFunction.Transpose(objFiles.items)
'Nach Datum in Spalte H (8) sortieren
If lngNext > 7 Then 'zum Sortieren müssen mindestens 2 Einträge vorhanden sein
With Range(.Cells(6, 7), .Cells(lngNext - 1, 8))
.Sort key1:=.Cells(1, 2), order1:=xlAscending, Header:=xlNo
End With
End If
End With
Ende:
Application.ScreenUpdating = True
End Sub
Gruß
Rudi
Anzeige
besten Dank , bin gerade ...
24.10.2016 17:07:29
Udo
am Feierabend machen, würde mich gleich nachher zuhause nochmal ransetzen und dein
Code einbauen zum Testen...
herzl. Dank Rudi meld mich später noch
Danke schön
LG udo
besten Dank , bin gerade ...
25.10.2016 08:47:16
Udo
am Feierabend machen, würde mich gleich nachher zuhause nochmal ransetzen und dein
Code einbauen zum Testen...
herzl. Dank Rudi meld mich später noch
Danke schön
LG udo
leider komme ich heute auch nicht dazu ...
25.10.2016 11:46:02
Udo
Hallo Rudi, bin gerade anderweitig eingespannt, komm heute auch noch nicht dazu.
ich schau das ich es evtl. heute Abend testen kann, melde mich noch dazu
Danke dir schon mal
LG udo

228 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige