vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Tscharlie
Datum: 12.05.20 13:22

Hallo Zusammen,
habe mir seit Jahren als Hobby eine Video Filmsammlung zugelegt. Nehme also Filme auf, streiche die Werbeblöcke und lege sie ab als MPG4 Datei.
Nachdem die Anzahl der Filme mittlerweile für eine händische Verwaltung zu groß ist und mir der Überblick verloren ging, habe ich sie nun in 1 Excel Datei kategolisiert, mit:
Titel, Genre, Erscheinungsjahr
Der Titel ist via Hyperlink mit dem Film - der auf einem NAS-Server liegt - verlinkt

Nun möchte ich als zusätzliche Info noch die Laufzeit und die Auflösung hinterlegen.

Frage: geht das überhaupt in VBA ?, da bin ich einigermaßen fit, allerdings habe ich bis dato nichts gefunden, was es mir ermöglicht, den Zugriff auf den Header zu erlauben.

Stelle mir vor, über den HL + FSO auf die Datei zuzugreifen aber wie geht es dann weiter?

Wäre fein, wenn mir jemand behilflich sein könnte

Viele Grüße
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: emaNoN
Datum: 16.05.20 14:43

Vielleicht hilft dir GetDetailsOf weiter: https://stackoverflow.com/a/58191307
Du musst nur den Index (steht dort auf 288) erhöhen (auf z.B. 320), um an Breite und Höhe des Videos heranzukommen (die stehen nämlich in 316 bzw. 314).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Tscharlie
Datum: 16.05.20 16:06

Hallo emaNoN,
danke für Info. Wenn ich mir das ansehe, das ist mir zu hoch.
ich habe nun folgendes gemacht: Habe mir für 35€ ein Video Verwaltungsprogramm gekauft. Dies gibt mir die Videos als Export in Excel aus, u.a. die gewünschten Bereiche, die stelle ich dann mit SVerweis zu meinen dazu. Nicht die optimale Lösung, würde es natürlich gerne in einem Rutsch mit meinem VBA machen aber bevor ich mich da lange quäle und solange keine Lösung da ist, die ich auch verstehe, mache ich es mal mit einem Kompromiss.
Gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Wobi
Datum: 17.05.20 01:14

Hallo,
hört sich interessant an. Hast du irgendwo vielleicht einen Link zu einer Doku was der jeweilige Index bedeutet?
Oder hilft da nur try and error? Du scheinst dich da ja aus zu kennen, da du gezielt 316 / 314 angesprochen hast.
Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: emaNoN
Datum: 19.05.20 17:17

@Wobi

„Du scheinst dich da ja aus zu kennen“

Nicht wirklich, ich habe das nur vor Jahren 'mal für JPGs gebraucht.
Bin auf diese Seite gestossen: https://stackoverflow.com/questions/35331145/visual-basic-vb-net-get-details-of-video-file-eg-frame-width, wo jemand die 316 / 314 erwähnt.

Besonders aufschlussreich ist allerdings das hier: http://www.mendipdatasystems.co.uk/extended-file-properties/4594398115. Dort gibt es auch eine ZIP-Datei zum Download, in der sich einige interessante Textfiles befinden, sowie eine AccessDB, die ich allerdings nicht öffnen kann.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Tscharlie
Datum: 19.05.20 17:30

Hallo emaNoN,
auf diese "getdetailsof" bin ich auch schon gestossen, habe es aber nicht weiter verfolgt, weil hiermit die Anzeige von der Videoauflösung - die ich mit drin haben wollte - nicht möglich ist.
Gruss
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Tscharlie
Datum: 19.05.20 17:33

was mir keine Ruhe lässt, ist dieser Beitrag:
https://www.vbarchiv.net/tipps/details.php?id=844

nach dem Motto, warum denn in die Ferne schweifen, wenn das Gute so nahe liegt

Beitrag wurde zuletzt am 19.05.20 um 17:42:49 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Kuno60
Datum: 20.05.20 21:14

GetDetailsOf verwende ich schon seit sehr langer Zeit. Es liefert exakt die gleichen Werte, die auch der Windows-Explorer anzeigt.
Allerdings hab ich noch nie Werte bei 314 und 316 finden können.
Kann aber möglich sein, dass neue Werte hinzugekommen sind.
Ich verwende diese Werte:
Bildhöhe: 283
Bildbreite: 285
Spieldauer: 27

Die vollständige Liste der Indexe kann man abfragen.

Beitrag wurde zuletzt am 20.05.20 um 21:25:38 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Tscharlie
Datum: 29.06.20 17:02

Hallo emaNoN,

nach einigen Irrwegen bin ich zu dem Schluss gekommen, dass Du mit "getdetailsof" total Recht hast.

Darf Dir versichern, dass ich bei zukünftigen Projekten Deine Vorschläge sofort ernster nehmen werde.

Habe nun nur noch das Problem, dass ich mit der Deklarierung der Object-Variablen noch Probleme habe, vielleicht kann mir da Jemand behilflich sein.


Pfad = Left(HL1, InStrRev(HL1, "\"))
Set objFolder = objShell.Namespace(Pfad)
Datei = Mid(HL1, InStrRev(HL1, "\") + 1)
Set objFolderItem = objFolder.parsename(Datei)

In HL1(Hyperlink-Adresse) ist der Zugriff auf die Datei
Den stückle ich in Pfad-String + Datei-String auf.

Das Makro nimmt Set objFolder noch auf, bei SetFolderItem springt er ohne Error-Code ans Ende

Das Seltsame ist: bestücke ich objfolder + objfolderitem direkt, also nicht über die String-Var, funktioniert es.
ObjFolder + ObjFolderItem sind deklariert als Object-Variablen, gibt es da irgendwelche Besonderheiten?

Wäre schön, wenn mir Jemand helfen könnte

Gruß
Tscharlie
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Manfred X
Datum: 29.06.20 19:28

Hallo!

Wie ist die Variable "Datei" deklariert worden?
Explizit als String oder implizit als Variant?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Tscharlie
Datum: 29.06.20 20:58

Hallo Manfred,

Datei als String

Gruß
Tscharlie
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Tscharlie
Datum: 30.06.20 16:24

Hallo Zusammen,
damit es man es sich besser vorstellen kann, habe ich das (vorläufig) komplette Makro mal reingestellt.

es geht um den Block Z.39 - Z.52

Stelle ich den Pfad-Namen direkt in Set ObjFolder rein, dann funktioniert es, kopiere ich ihn per String Variable rein, springt das Makro ohne Err-Code zum Ende

1 Private Sub GetDet()
2 '********************************
3 Dim objShell As Object 'Shell
4 Dim objFolder As Object 'Folder
5 Dim objFolderItem As Object 'Datei
6 Dim I As Long
7 Dim szItem As String
8 '*******************************
9 Dim FSO As Object
10 Dim InsSte As Integer
11 Dim Zae1 As Long, GesZae As Long, Zae2 As Long, FindZei As Long 'Zähler für Schleife
12 Dim HL1 As String, ZellAdr As String, KeyStr As String, DoppStr As String, TMP As String
13 Dim FilKZ As Integer, ZeiNr As Long, intZeile As Integer, IZ As Integer
14 Dim NAECHSTER As String, Pfad As String, Datei As String, Zeich As String
15 '*******************************
16 Set FSO = CreateObject("scripting.filesystemobject")
17 Set objShell = CreateObject("Shell.Application")
18 '*******************************
19 Application.Calculation = xlManual
20 Application.ScreenUpdating = False
21 '*******************************
22 Zae1 = 2
23 IZ = 2
24
25 WEITER:
26 GesZae = Range("D65535").End(xlUp).Row
27 Do While Zae1 <= GesZae
28 If Cells(Zae1, 4) = "" Or Left(Cells(Zae1, 4), 1) = "'" Then GoTo NAECHSTER
29 HL1 = UCase(Cells(Zae1, 4).Hyperlinks(1).Address)
30 If HL1 <> "" And (Cells(Zae1, 14) = 0 Or Cells(Zae1, 14) = "") Then
31 InsSte = UCase(InStr(HL1, "MOVIE")) + 5
32 HL1 = "Z:" & Trim(Mid(HL1, InsSte, 250))
33
34 If FSO.FileExists(HL1) Then
35 With FSO.GetFile(HL1)
36 Cells(Zae1, 14) = .Size / 1000
37 Cells(Zae1, 15) = .DateLastModified
38 End With
39 '*** Anfang: um diesen Block geht es:
40 Pfad = Left(HL1, InStrRev(HL1, "\"))
41 ' lt. Debug.Print = Pfad: "Z:\MÄRCHEN, SAGEN, LEGENDEN\NIBELUNGEN\"
42
43 '***wenn ich das setze, funktioniert es nicht:
44 'Set objFolder = objShell.Namespace(Pfad)
45
46 'Direkteingabe funktioniert, kann ich aber nicht brauchen
47 Set objFolder = objShell.Namespace("Z:\MÄRCHEN, SAGEN, LEGENDEN\NIBELUNGEN\")
48 Datei = Mid(HL1, InStrRev(HL1, "\") + 1)
49 Set objFolderItem = objFolder.parsename(Datei)
50 'Video-Auflösung:
51 Cells(Zae1, 26) = objFolder.GetDetailsOf(objFolderItem, 316) & "x" & Folder.GetDetailsOf(objFolderItem, 314)
52 '***** Blockende
53 Else
54 Stop
55 Debug.Print Zae1 & " "; Cells(Zae1, 4) & " " & HL1 & " HL Link ist nicht i.O." 'falscher HL
56 GoTo NAECHSTER
57 End If
58 End If
59 NAECHSTER:
60 Zae1 = Zae1 + 1
61 HL1 = ""
62 'If Zae1 = 13553 Then Stop
63 'Debug.Print Zae1 '**********************
64 Loop
65
66 Set objFolder = Nothing
67 Set objShell = Nothing
68 Application.Calculation = xlCalculationAutomatic
69 Application.ScreenUpdating = True
70 MsgBox "Fertig!!!"
71 End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zugriff von Excel 2016 auf MPEG Datei Header 
Autor: Tscharlie
Datum: 30.06.20 18:52

Hallo Zusammen,
habe nun den Knackpunkt gefunden. Wie immer alles ganz easy, wenn man es weiß.
Sollte es jemand interessieren, im Makro Z.47 löschen, dafür in Z.44 das Auskommentieren aufheben und vor der "Pfad"-Var. "cVar" einfügen.
Dies hebt die Pfad-Var. als String auf und macht sie zu einer Variant Variablen

So ganz verstehe ich es zwar nicht, aber es funktioniert.

An Alle, die hier - wenn auch nur kurzfristig - wegen meinem Problem die grauen Zellen in Gang gesetzt haben, vielen Dank

Bis zum nächsten Mal

Tscharlie
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel