Exel VBA - GetDetailsOf

MickH74

Lieutenant
Registriert
Apr. 2009
Beiträge
591
Hallo zusammen,

ich hatte mir für meine Filmsammlung in VBA ein kleines Tool geschrieben, dass aus jeder Video-Datei einige Eigenschaften ausliest.
Die Eigenschaft habe ich über GetDetailsOf gelesen und in eine Tabelle geschrieben.

Gelesen wurden die Eigenschaften:

0 = Dateiname
1 = Dateigröße
27 = Länge (Dauer)
310 = Horiz. Auflösung
314 = Gesamtbitrate
315 = Audioformat
321 = Video Codec

Das ganze über diese Schleife, wobei x im Array ArrEigenschaft die jeweilige Nummer der Dateieigenschaft hält.

Code:
For Each varName In objFolder.Items
  If varName.Type <> "Dateiordner" Then
    For x = 1 To 7
      Sheets("Filme").Range("Filme").Cells(LngRow + 1, x) = objFolder.GetDetailsOf(varName, ArrEigenschaft(x))
    Next
  End if
Next

Heute starte ich das Tool, um die Liste zu aktualisieren, aber nun werden ganz andere Eigenschaften ausgelesen.
Statt der horiz. Auflösung wird nun die Bildrate ausgegeben. Video- und Audiocodec bleiben komplett leer und die Bitrate stimmt nicht mehr. Oder bei Codec steht nun sowas wie: {34363248-0000-0010-8000-00AA00389B71} statt HEVC (H265 Main 10 @L6.1).

Ich habe gedacht, vielleicht sind die Nummern der Dateieigenschaft mit dem Fall Creators Update von Win 10 geändert worden und darum habe ich eine Schleife programmiert, die mir alle Dateieigenschaften von 0 bis 323 ausgibt. Aber auch in der ganzen Liste sind die Felder für Audio- und Videocodec leer bzw. krytisch und die Bitrate falsch. Die horiz. Auflösung finde ich nun bei 311 statt 310.

Hat jemand eine Idee? Wird das Auslesen der Dateieigenschaften von anderen installierten Programmen (wie z.B. MediaInfo oder den installierten Codecs) beeinflusst? Wäre möglich, dass ich beim Aufräumen irgendetwas in der Art deinstalliert habe.

Danke schon mal und viele Grüße,
Mick
 
Danke für den Link. Ein Hinweis darauf, dass es an einem Office-Patch liegt. Leider hilft die vorgeschlagene Lösung (auf anderen Update-Channel stellen und neu installieren) bei mir nicht. Ich versuchs dann parallel mal in einem Office-Forum.

Das Range("Filme") sorgt dafür, dass in die Zeilen eines benannten Bereichs geschrieben wird. .Range("Filme").Cells(1,1) ist also nicht Zelle A1 auf dem Blatt, sondern die erste Zeile der ersten Spalte des benannten Bereichs. Damit ist man etwas flexibler, falls man später z.B. noch andere Zeilen oberhalb der Ergebnisliste einfügen möchte.
 
Aber nur wenn auch Sheets("Filme").Range("Filme").Cells(1,1) angefordert wird.
Sheets("Filme").Cells(1,1) ist die echte 1|1 (A1) im Blatt.

Diese an sich sehr logische Deklaration muss man immer im Auge haben wenn man referenziert. MickH74 hat es durchaus eindeutig erklärt.

CN8
 
Die IDs wurden wirklich geändert.
Ist mir auch schon aufgefallen. Das sollte aber nichts mit Office oder ähnlichem zu tun haben (Lass mich aber gerne eines Besseren belehren).
Die Abfrage basiert ja auf der Windows Shell.
VB.Net:
Code:
...
objShell = New Shell
objFolder = objShell.NameSpace(strFolder)
objFolderItem = objFolder.ParseName(strFile)
For i to ...
            strHeader = objFolder.GetDetailsOf(objFolder.Items, i)
            strDetail = objFolder.GetDetailsOf(objFolderItem, i)
Next
...


Hab mir damals ein VB.Net Tool gebastelt, um per Rechtsklick -> ExtFileDetails alle Infos von Dateien und Verknüpfungen zu erhalten.
Damit kannst du ja mal VBA unabhängig das Ganze prüfen.
Hab es auf OneDrive hochgeladen.
https://onedrive.live.com/?authkey=!AIPwaNCIQbr8cvo&id=19A85E5C2A5C0044!1829&cid=19A85E5C2A5C0044
Kann man per INF-Datei installieren und auch wieder über "Programme und Features" deinstallieren.
Einfach die HowTo lesen.
 

Anhänge

  • 2017-11-17 19_32_24-ExtFileDetails 2.1.0.0.png
    2017-11-17 19_32_24-ExtFileDetails 2.1.0.0.png
    34,8 KB · Aufrufe: 753
Danke für das Tool. Habs gerade mal ausprobiert. Die Ausgabe ist genau die gleiche, die ich auch mit VBA in Excel erhalte.

Wenn ich mein Makro auf einem anderen Computer starte, sind die Eigenschaften wieder ganz anderen Nummern zugeordnet.

Ich finde zu der Funktion auch keine brauchbare Dokumentation von Microsoft. Ist echt eine Schande, denn als es noch funktionierte, war es richtig schnell. Für 100 Filme brauchte das Makro nur knappe 5 Sekunden.

Falls doch noch jemand eine Idee oder Hinweis hat: ich bin weiterhin interessiert!

Gruß,
Mick
 
Zurück
Oben