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

Dateieigenschaften

Dateieigenschaften
02.04.2023 15:01:39
El-Ti

Liebes Forum

Ich habe ein Makro - das sehr schnell ist - das ich aber mit den gängigen Dateieigenschaften erweitern möchte. Also, im Prinzip gleich, wie das vorhandene Makro von "Nepomuk". Dieses Makro liest eine Festplatte in ca. 20 Min. aus. Darauf sind aber ca. 240000 Dateien, überwiegend alles kleine Dateien. Diese Dateien stammen von einem Videoverwaltungsprogramm, wo man allen "Schnickschnack" eingeben kann und da hat sich natürlich im Laufe der Zeit eben erhebliches angesammelt. Aus diesem Grunde muss halt immer wieder mal aufgeräumt werden und neue Filme kommen ja auch wieder dazu. Mit dem Makro von Nepomuk brauche ich zum auslesen ca.1:20 Std. Das wäre schon ein ordentlicher Zeit Vorteil, wenn ich das mit dem angesprochenen Makro machen könnte. Das wären diese Dateieigenschaften:
("Name", "Ordner Name", "Path", "Type", "Größe", "Länge", "Änderungsdatum", "Erstelldatum", "Letzter Zugriff", "Bildbreite", "Bildhöhe")

Vielen Dank im voraus.

Viele Grüße
Elfriede

https://www.herber.de/bbs/user/158543.xlsm

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateieigenschaften
02.04.2023 16:16:36
snb
Welche Windows Version benützst du ?

Viel schneller:

Sub M_snb()
    sn = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""E:\Test\*.mp4"" \s\b").stdout.readall, vbCrLf)
    
    For Each it In sn
       MsgBox it
    Next
End Sub


AW: Dateieigenschaften
02.04.2023 18:03:40
El-Ti
Hallo snb,

Dein Makro mag schnell sein, nur zeigt es keinerlei Infos an. Ich bräuchte ja ein Makro mit diesen erwähnten Eigenschaften, da ich diese ja in Excel archivieren will. Außerdem soll es mir ja auch alle Arten von Dateien anzeigen, die auf der externen Festplatte abgespeichert sind. Meine Windows Version ist (11)

Viele Grüße
Elfriede


Anzeige
AW: Dateieigenschaften
02.04.2023 18:35:41
Piet
Hallo snb

ich freue mich das du am Thread beteiligt bist, kenne deine kurzen, tollen Makros!
Es interessiert mich auch für mich zum auflisten vieler Video Ordner in eine Tabelle.

Leider zeigte mir ein Test das Ergebnsi MsgBox UBound -1 an. Was mache ich da falsch??
Wie kann man das Array in eine Tabelle laden?? Listet es alle gewünschten Dateieigneschaften mit auf??
sn = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Opas Videos\*.mp4*""\s\b").stdout.readall, vbCrLf)
MsgBox UBound(sn)

mfg Pet


AW: Dateieigenschaften
02.04.2023 23:00:18
snb
Versuch's mal so:

Sub M_snb()
  sn = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Opas Videos\*.mp4*"" /s/b").stdout.readall, vbCrLf)
  MsgBox UBound(sn)
End Sub


Anzeige
AW: Dateieigenschaften
02.04.2023 23:17:49
El-Ti
Hallo snb,

wird immer noch nichts angezeigt. Das einzige was man zu sehen bekommt, ist eine MsgBox mit der Anzeige der Menge der Dateien, die man ausgewählt hat.

Viele Grüße
Elfriede


AW: Dateieigenschaften
03.04.2023 01:22:22
Piet
Hallo

man kann alle Dateien mit dem unteren Makro auflisten, aber nur eine Spalte!
Leider ist das ein alter DOS Befehl, von dem ich nichts verstehe! Ihn Nicht erweitern kann!

İch habe noch mal eine Datei mit einem alten Dir System erstellt. So erstaunlich es klingt, habe ich bei vielen Dateien die Erfahrung gemacht das die alte Dir Version schneller ist als das neue FSO System!
Bitte teste mal aus reiner Neugier diese Datei. Interessiert mich wie lange es damit dauert???
Den "Base Namen" konnte ich damit nicht finden, ich weiss auch nicht ob der wichtig ist??
https://www.herber.de/bbs/user/158572.xls

Du musst diese Datei zuerst als xlsm neu abspeichern, es ist eine alte Excel 2003 Datei.
Leider steht mir nur leihweise ein alter XP Laptop zur Verfügung, mein Medion mit Win10 ist defekt!

Ich bin gespannt wie dein Test verlauft... Vielleicht kann snb seinen Code noch erweitern. Der ist extrem schnell!!

mfg Piet

  • Sub M_snb()
       Cells.ClearContents
       sn = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Opas Videos\*.mp4*"" /s/b").stdout.readall, vbCrLf)
       Range("A1").Resize(UBound(sn), 1).Value = Application.Transpose(sn)
    End Sub



  • Anzeige
    AW: Dateieigenschaften
    03.04.2023 11:15:28
    snb
    Wir machen Code Schritt für Schritt:

    Sub M_snb()
        Set sh = CreateObject("shell.application")
        ReDim sn(sh.Namespace("G:\OF\").Items.Count, 40)
        
        For Each it In sh.Namespace("G:\OF\").Items
          n = n + 1
           If sn(0, 0) = "" Then
             For j = 0 To 40
                sn(0, j) = it.Parent.GetDetailsOf(it1, j)
             Next
           End If
           For j = 0 To 40
             sn(n, j) = it.Parent.GetDetailsOf(it, j)
           Next
        Next
        
        Tabelle1.Cells(1).Resize(UBound(sn) + 1, UBound(sn, 2) + 1) = sn
    End Sub


    Anzeige
    AW: Dateieigenschaften
    02.04.2023 20:12:04
    El-Ti
    Hallo Nepumuk,

    schön von Dir, dass Du Dein Wissen auch einbringst. Ich habe gerade Dein Makro getestet und es hat alle Dateieigenschaften an Bord, die ich aufgeführt habe. Natürlich gibt es noch ein paar Dinge zu machen, wie Formatierungen, Überschriften etc. Aber diese Sachen bringe ich schon selber hin. Momentan habe ich gerade Dein Makro mit den großen Ordnern mit den vielen Dateien zum Testen aufgerufen. Bin mal gespannt, wie lange es dauert, bis die FP ausgelesen ist? (Habe einen "Timer" eingebaut). Melde mich dann wieder, wenn ich das Ergebnis vorliegen habe.

    Viele Grüße
    Elfriede


    Anzeige
    AW: Dateieigenschaften
    02.04.2023 20:13:04
    onur
    Und wozu noch offen ?


    AW: Dateieigenschaften
    02.04.2023 21:07:59
    El-Ti
    Hallo Nepumuk,

    habe jetzt das Ergebnis: Laut dem Timer hat Dein Makro "61:10 Min." gebraucht. Dieses Makro wo ich hochgeladen habe, braucht für die selben Ordner aber nur ca. 20 Min. Das ist schon ein gewaltiger Unterschied, deshalb würde es mich auch brennend interessieren, ob das Makro dann immer noch so schnell ist, wenn das Makro mit allen Dateieieigenschaften bestückt ist, wie das von dir Nepomuk. Wenn Du bitte mal so gut wärst, und - falls nicht schon geschehen - Dir das Makro mal anschauen könntest. Ich bräuchte nur die "Eigenschaften" eingebaut und sonst nichts.

    Viele Grüße
    Elfriede


    Anzeige
    AW: Dateieigenschaften
    03.04.2023 09:11:08
    Nepumuk
    Hallo Elfriede,

    mit dem FileSystemObject-Objekt kannst du die gewünschten Eigenschaften nicht auslesen. Das geht nur mit dem Shell-Objekt, und das braucht nun mal seine Zeit.

    Gruß
    Nepumuk


    AW: Ich bitte die Kollegen um Hilfe
    03.04.2023 12:59:31
    Piet
    Hallo Liebe Kollegen

    könnt ihr euch bitte mal meine letzte Beispieldatei ansehen. Der Code von snb ist brillat, listet aber nur einen Ordner auf.

    Diese alte Dir Version habe ich nach ihren Wünschen auf Array umgeschrieen. Bei Arrays fehlt mir aber das fachliche Wissen es ans laufen zu bekommen. Meine höfliche Bitte ist, das ihr es euch anseht, und meinen Fehler behebt. Dann könnte es eine sehr gute Datei für İhre Zwecke werden!
    https://www.herber.de/bbs/user/158574.xls

    Würde mich freuen wenn ihr meinen Fehler beheben könnt. Bin beim Koffer packen, muss mich beeilen.
    Mache einen Monat Pause im Forum. Urlaub in der Eifel, ohne Internet!

    mfg Piet


    Anzeige
    AW: Dateieigenschaften
    03.04.2023 13:00:53
    Piet
    Nachtrag

    Es ist eine alte Excel 2003 Datei, sie müsste im neuen xlsm Format gespeichert werden!


    AW: Ich bitte die Kollegen um Hilfe
    03.04.2023 13:21:21
    Piet
    Nachtrag, noch ne Idee

    diese Version funktioniert leider auch nicht. Ist das Array falsch deklariert???

  • Do While Len(temp)
    Txt = LCase(Right(temp, 3))
    Set objFile = objFolder.ParseName(temp)
    If Txt = "mp3" Or Txt = "mp4" Then
    f = f + 1 'Zeilen Zähler
    ReDim arrDat(1 To f, 1 To 11)
    arrDat(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1) = temp 'Name"
    arrDat(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0) = objFile.Folder 'Ordner
    arrDat(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0) = objFile.Path 'Path
    arrDat(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0) = objFile.Type 'Type
    'arrDat(f,0,0,0,0,0,0,0,0,0,0, 3) = FileLen(Laufwerk & temp) 'Size
    arrDat(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0) = objFolder.GetDetailsOf(objFile, 1) 'Size
    arrDat(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0) = objFolder.GetDetailsOf(objFile, 27) 'Länge
    'alle Datum angaben auflisten
    arrDat(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0) = objFolder.GetDetailsOf(objFile, 3) 'Modified
    arrDat(0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0) = objFolder.GetDetailsOf(objFile, 4) 'Created
    arrDat(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0) = objFolder.GetDetailsOf(objFile, 4) 'Access
    'Video/MP3 Länge, Breite, Höhe auflsisten
    arrDat(0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0) = objFolder.GetDetailsOf(objFile, 316) 'Breite
    arrDat(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = objFolder.GetDetailsOf(objFile, 314) 'Höhe
    End If
    temp = Dir()
    Loop



  • Anzeige
    AW: Ich bitte die Kollegen um Hilfe
    03.04.2023 13:53:17
    Rudi Maintaire
    Hallo,
    das ist vollkommener Unsinn.
    1. kann man nur die letzte Dimension eines Arrays ändern.
    2. wird durch Redim das Array komplett geleert
    3. (das ist das Schlimmste) adressierst du die Elemente absolut falsch.
    kleiner Auszug:

    
    'ganz oben irgendwo:
    Dim arrDat(1 to 11, 1 to 1)
    'Code
    'Code
    'Code
    ReDim Preserve(arrDat(1 To 11, 1 To f)
    arrDat(1, f) = temp
    arrDat(2, f) = objFile.Folder
    'etc.
    Am Ende dann das Array drehen:
    arrDat=Application.Transpose(arrDat)
    Gruß
    Rudi


    Anzeige
    AW: Rudi, Danke für deine Hilfe
    03.04.2023 17:08:01
    Piet
    Hallo Elfriede

    @ Danke an Rudi, ich habe zwar "völligen Blödsinn" programmiert, aber im Augenblick funktioniert es so bei mir.
    Warum ich bei ReDim mit f+1 UND g + 11 arbeiten musste ist mir noch schleierhaft, aber so klappt es bei mir.
    Vorher listete der Code nur den ersten Ordner auf, dann kamen nur noch "#NV"! - Mit der g+11 Lösung lief es!
    https://www.herber.de/bbs/user/158578.xls

    Hallo Elfriede
    ich mach auch schon mal Blödsinn, aber es würde mich freuen wenn diese Datei dir weiterhift!!
    Deine Antwort kann ich ja im Archiv nachlesen. Viel Spass beim testen! Start und Stoppzeit wird notiert.
    Sollten dir Kollegen eine bessere Lösung anbieten auch kein Problem, dann nimm die bessere Datei!

    mfg Piet




    Danke für Euere Hilfe
    04.04.2023 11:02:43
    El-Ti
    Hallo, Piet, Nepomuk, Rudi, snb,

    vielen Dank gebührt allen die sich an diesem Thread beteiligt hatten. Ganz besonderen Dank geht natürlich an Piet, der trotz anstehendem Urlaub, es sich nicht nehmen ließ, noch schnell etwas auf die "Beine" zu stellen. Ich muss sein Makro erst noch genauer testen, um eine endgültige Wahl zu treffen, welches Makro ich in Zukunft verwenden werde. Ganz bestimmt wird auch das Makro von "Nepomuk" dabei sein. Denn was "Nepomuk" abgeliefert hat, ist schon "erste Sahne". Alleine der Aufbau der "Klassenmodule" ist für mich als VBA Laie schon bewundernswert und zeigt auch, wieviel Arbeit und Mühe sich manche Forums Mitglieder mit uns machen. In diesem Sinne ...

    Viele Grüße
    Elfriede

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige