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

Links sortieren nach Verzeichniss

Links sortieren nach Verzeichniss
09.10.2021 06:21:21
oraculix
Hallo Profis!
In der Tabelle1 lese ich per VBA alle Dateien aus Festplatte E:\ aus und es wird aus jeder Datei
ein Hyperlink erstellt. Der VBA Code funktioniert perfekt.
Frage:
Wie kann ich die eingelesen Dateien nach nach Erstelldatum sortieren?
Im Laufwerk E:\ habe ich vorher im Win Explorer nach Erstelldatum sortiert, aber trotzdem liest der VBA Code es so ein das es von A-Z sortiert ist.
https://www.herber.de/bbs/user/148517.xlsm
Danke
Gruß
Oraculix
'Liest aus Verzeichniss E:\ Alle Filme aus und gibt sie als Link aus

Sub LinkE_Click()
Const FILE_PATH As String = "E:\"
Dim lngRow As Long
Dim strFilename As String
Application.ScreenUpdating = False
'Löscht alte einträge
Range("A2:A5000").ClearContents
lngRow = 1
Call Range(Cells(1, 1), Cells(Rows.Count, 1)).ClearContents
strFilename = Dir$(FILE_PATH & "*.*")
Do Until strFilename = vbNullString
lngRow = lngRow + 1
Call ActiveSheet.Hyperlinks.Add(Anchor:=Cells(lngRow, 1), _
Address:=FILE_PATH & strFilename, _
TextToDisplay:=Left$(strFilename, InStrRev(strFilename, ".") - 1))
strFilename = Dir$
Loop
'Schriftgröße einstellen
Columns(1).Font.Size = 15
Columns(2).Font.Size = 15
'Spaltenbreite einstellen
Columns("A:A").ColumnWidth = 53.53
Columns("B:B").ColumnWidth = 47.76
Columns("C:C").ColumnWidth = 45.53
'Schrift Farbe einstellen
With Range("A2:C5000")
.Interior.Color = vbBlack
.Font.Color = RGB(255, 192, 0)
End With
Application.ScreenUpdating = True
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Links sortieren nach Verzeichniss
09.10.2021 10:25:37
Hajo_Zi
ich konnte in dere Datei keine Daten sehgen.
Sortiere nach Spalte C
GrußformelHomepage
In diesem Forum bekomme ich kein Mailbenachrichtigung, weitere Antworten sind zufällig.
AW: Links sortieren nach Verzeichniss
09.10.2021 15:54:07
oraculix
Hallo Hajo Danke
Du musst nur das Verzeichniss Ändern Statt E:\ ein beliebiges Verzeichniss Deiner Festplatte
Const FILE_PATH As String = "E:\" 'z.b C:\Bilder
Gruß
Oraculix
Anzeige
AW: Links sortieren nach Verzeichniss
09.10.2021 10:45:13
Piet
Hallo
Vorsicht mit CALL, der Befehl ist zum Aufruf von Unterprogrammen reserviert. Mich wundert das Excel sich an Call vor Range nicht stört!
Auf Call vor Hyperlink kannst du verzichten wenn du die Klammer weglässt. AUf den Call für ClearContents kannst du ganz verzichten. Dafür habe ich den ersten Clear Befehl erweitert. Ist doch viel einfacher!
Neu eingefügt habe ich den Befehl in der Do Loop Schleife um das File-Datum mit aufzulisten. Dann kannst du die Daten nach diesem Datum sortieren! In welcher Spalte du die Zeit auflisten willst must duentscheiden, und den Code ggf. an diese Spalte anpassen. Dann sollte es klappen. Hier der geänderte Ciode bis zur Sortier Routine, der Restbleibt wie vorher.
mfg Piet
  • Sub LinkE_Click()
    Const FILE_PATH As String = "D:\_Excel Heute\"
    Dim lngRow As Long
    Dim strFilename As String
    Application.ScreenUpdating = False
    'Löscht alte einträge
    Range("A2:A" & Rows.Count).ClearContents
    lngRow = 1
    '### Überflüssig!!
    'call Range(Cells(1, 1), Cells(Rows.Count, 1)).Select 'ClearContents
    strFilename = Dir$(FILE_PATH & "*.*")
    Do Until strFilename = vbNullString
    lngRow = lngRow + 1
    ActiveSheet.Hyperlinks.Add anchor:=Cells(lngRow, 1), _
    Address:=FILE_PATH & strFilename, TextToDisplay:= _
    Left$(strFilename, InStrRev(strFilename, ".") - 1)
    '** Time in Spalte D einfügen (oder andere Spalte)
    Cells(lngRow, 4) = FileDateTime(FILE_PATH & strFilename)
    strFilename = Dir$
    Loop
    '### Sortierroutine für Spalte D einbauen!!
    Range("A2:D5000").Sort Key1:=Range("D2"), Order1:=xlAscending, Header:= _
    xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    '### Ende

  • Anzeige
    AW: Links sortieren nach Verzeichniss
    09.10.2021 11:19:50
    Piet
    Nachtrag
    die Antwort von Hajo hat mich gerade auf den Bereich bis C aufmerksam gemacht. Ich weiss nicht was da für Daten drinstehen, aber die werden nach dem Auflisten von Dir$ nicht mehr mit den Dir$ Dateien übereinstimmen! Du solltest ganz oben den ClearContents Bereich auf den Bereich bis Spalte D ändern. - Range("A2:D" & Rows.Count).ClearContents
    mfg Piet
    AW: Links sortieren nach Verzeichniss
    09.10.2021 15:48:14
    oraculix
    Hallo Piet genial vielen Dank!
    Leider wird aber nicht nach Erstelldatum sortiert!
    Es ist ein unterschied im Win Explorer ob man Datum oder Erstelldatum einstellt!
    Beispiel: Erstelldatum und Datum
    Wenn ich eine Datei Überschreibe weil Daten geändert werden ist das dann das Erstelldatum
    für mich Wichtig und nicht das Datum wann die Datei das erste mal hinzugefügt wurde.
    Dieses Erstelldatum muss im Win Explorer extra eingefügt werden mit rechter Maus auf Spalte klicken
    und hacken bei Erstelldatum rein.
    Könntest Du den VBA Code auf das Erstelldatum anpassen Bitte?
    Gruß
    Oraculix
    Anzeige
    FileDateTime Falsch?
    09.10.2021 16:48:19
    oraculix
    Hier der Angepasste Code
    Er funktioniert zwar aber es müsste eine andere Formulierung für FileDateTime geben!
    Also wie heist der Code für ERSTELLDATUM statt normales Datum?
    'Liest aus Verzeichniss E:\ Alle Filme aus und gibt sie als Link aus
    Sub LinkE_Click()
    Const FILE_PATH As String = "E:\"
    Dim lngRow As Long
    Dim strFilename As String
    Application.ScreenUpdating = False
    'Löscht alte einträge
    Range("A2:C" & Rows.Count).ClearContents
    lngRow = 1
    strFilename = Dir$(FILE_PATH & "*.*")
    Do Until strFilename = vbNullString
    lngRow = lngRow + 1
    ActiveSheet.Hyperlinks.Add anchor:=Cells(lngRow, 1), _
    Address:=FILE_PATH & strFilename, TextToDisplay:= _
    Left$(strFilename, InStrRev(strFilename, ".") - 1)
    '** Time in Spalte D einfügen (oder andere Spalte)
    Cells(lngRow, 3) = FileDateTime(FILE_PATH & strFilename)
    strFilename = Dir$
    Loop
    '### Sortierroutine für Spalte C!!
    Range("A2:C5000").Sort Key1:=Range("C2"), Order1:=xlAscending, Header:= _
    xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    '### Ende
    Gruß
    Oraculix
    Anzeige
    AW: FileDateTime Falsch?
    09.10.2021 18:23:45
    Piet
    Hallo
    im Internet fand ich für dein Problem folgenden Code über "FSO=FileSystemObject". Schau bitte mal ob damit das datum stimmt?
    Cells(lngRow, 4) = CreateObject("Scripting.FileSystemObject").GetFile(FILE_PATH & strFilename).DateCreated
    mfg Piet
    AW: FileDateTime Falsch?
    09.10.2021 18:36:26
    oraculix
    Danke für Deine Mühe
    Aber es kommt immer ein Fehler Datei nicht gefunden!
    '** Time in Spalte D einfügen (oder andere Spalte)
    'Cells(lngRow, 3) = FileDateTime(FILE_PATH & strFilename)
    strFilename = Dir$
    Cells(lngRow, 3) = CreateObject("Scripting.FileSystemObject").GetFile(FILE_PATH & strFilename).DateCreated
    Loop
    Anzeige
    AW: FileDateTime Falsch?
    09.10.2021 19:04:56
    Piet
    Hallo
    setze den Befehl Create Object bitte VOR strFilename = Dir$ und schaue ob es dann klappt. Alternativ habe ich noch einer andere Variante für dich.
    Das erste Makro ist das Original zum auflisten von 33 Dateieigenschaften eines Ordners. Daraus abgeleitet habe ich die Kurzversion für deine Zwecke. Teste das Makro erst mal in einer Testdatei, bis es so läuft wie du es brauchst. Dann setze in der Testdatei dein Makro ein und ersetze den Do Loop Teil durch die For Next Version. Bastele solange bis es klappt. Viel Glück beim basteln und testen.
    Im zweiten Makro findest du - Cells(i, 1) = strFilename für Dateiname ohne Endung. Die Zeile darunter mit der Datei-Endung, z.B. .pdf usw.
    Es bleibt dir überlassen welche als Hyperlink besser geeignet ist. Statt Dir$ ist das eine "ShellObject" Version. Gibt es auch noch in FSO.
    mfg Piet
    
    Sub Datei_Eigenschaften()
    Const FILE_PATH As String = "D:\_Excel Heute\"
    Worksheets("Test").Select
    Cells.Clear
    On Error Resume Next
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(FILE_PATH)
    i = 2
    For j = 0 To 320
    Cells(1, j + 2) = j & " " & objFolder.GetDetailsOf(, j)
    Next
    For Each strFilename In objFolder.Items
    Cells(i, 1) = strFilename
    For j = 0 To 320
    Cells(i, j + 2) = Trim(objFolder.GetDetailsOf(strFilename, j))
    Next
    i = i + 1
    Next
    Columns.AutoFit
    End Sub
    
    '** Hier die Kurzversion für deine Zwecke!
    
    Sub Datei_eigenschaften_2()
    Const FILE_PATH As String = "D:\_Excel Heute\"
    Worksheets("Test").Select
    Cells.Clear
    On Error Resume Next
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(FILE_PATH)
    i = 2
    For Each strFilename In objFolder.Items
    Cells(i, 1) = strFilename   'Dateiname OHNE Endung. unten mit Endung
    'Cells(i, 1) = strFilename & objFolder.GetDetailsOf(strFilename, 164)
    Cells(i, 3) = objFolder.GetDetailsOf(strFilename, 4)
    i = i + 1
    Next
    End Sub
    

    Anzeige
    AW: Du bist ja ein echtes Genie Erledigt
    09.10.2021 19:40:00
    oraculix
    Super vielen Dank Du bist ja ein echtes Genie
    Gruß
    Oraculix
    AW: vielen Dank für nette Rückmeldung oWt
    09.10.2021 19:53:44
    Piet
    ,,,

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige