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

Ergänzung in Makro

Ergänzung in Makro
25.03.2023 16:00:55
El-Ti

Liebes Forum,

ich habe ein kleines Problem mit dem Ergänzen von Dateieigenschaften. "Nepomuk" hat mir mal die Datei https://www.herber.de/bbs/user/130273.xlsm > überarbeitet. Zu meinem Pech habe ich noch vergessen zu fragen, wie man noch andere "Dateieigenschaften" die per Nummer eingefügt werden müssen, in dieses Makro integrieren kann. Momentan dreht es sich hauptsächlich um die "Länge" eines Videos, die mir hier noch fehlen.
Vielen Dank im voraus.

Viele Grüße
Elfried

38
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ergänzung in Makro
25.03.2023 16:38:51
volti
Hallo Elfried,

nur mal so als Idee.

Lass dir doch alle Eigenschaften im Debug ausgeben und such Dir dann das passende aus.....
        For lngIndex = 0 To 400
            Select Case objFolder.GetDetailsOf(Empty, lngIndex)
                Case PICTURE_HEIGHT
                    lngPictureHeightIndex = lngIndex
                Case PICTURE_WIDTH
                    lngPictureWidthIndex = lngIndex
                Case VIDEO_HEIGHT
                    lngVideoHeightIndex = lngIndex
                Case VIDEO_WIDTH
                    lngVideoWidthIndex = lngIndex
                Case FILE_TYPE
                    lngFileTypeIndex = lngIndex
                Case Else
                    Dim T
                    T = objFolder.GetDetailsOf(Empty, lngIndex)
                    If T > "" Then Debug.Print lngIndex, T
            End Select
        Next
Gruß KH


Anzeige
AW: Ergänzung in Makro
25.03.2023 18:25:53
El-Ti
Hallo Volti,

zuerst Danke für Deine Antwort. Habe das jetzt im Makro eingefügt. Aber getan hat sich da nichts. Ich bin immer noch so schlau wie vorher. Es geht ja darum, wie ich das Makro dazu bringen kann, dass er mir die Länge der Videodateien anzeigt. Was muss ich da ergänzen???

Viele Grüße
Elfriede


AW: Ergänzung in Makro
25.03.2023 19:15:14
Volti
Hallo Elfriede,

Natürlich tut sich da so erstmal nichts.
Es sollen mit dem Zusatzcode alle vorhandenen Eigenschaften aufgelistet werden.
Diese kannst du dir dann im Debug-Bereich anschauen und deinen Code entsprechend erweitern.

Wenn fertig, kommt mein Zusatzcode wieder weg.
Ich weiß nicht, ob die von dir gewünschte Eigenschaft dabei ist.
Falls nicht, muss ein komplett anderes Konzept her, ggf. Mcisend-Funktionen.

Aber vielleicht hat ja jemand noch eine andere Idee.

Gruß KH


Anzeige
AW: Ergänzung in Makro
25.03.2023 19:26:27
El-Ti
Hallo Volti,

so gut kenne ich mich mit VBA auch nicht aus und kann mit im "Debug-Bereich anschauen" wenig anfangen. Welche Eigenschaften ich momentan benötige weiß ich ja - die ist ja bekannt (Länge der Mp4 bzw. Mp3 Datei soll mit angezeigt werden).

Viele Grüße
Elfriede


AW: Ergänzung in Makro
25.03.2023 20:01:24
JoWE
Hallo,
Einen entsprechenden Code, ich meine der ist von Nepumuk, hatte ich mir mal interessehalber kopiert, jedoch nie selbst getestet. Da sollte das Makro die Spielzeiten von Mediafiles ermitteln.
Die Angaben stehen dazu in Spalte A untereinander
Hilfts? Vllt. liest Nepumuk ja auch mit?!

Option Explicit
Public Sub Beispiel()
Const FILE_PROPERTY = "Länge"
Const MAX_PROPERTYS = 400
Dim objShell As Object, objFolder As Object
Dim objCell As Range
Dim strFilename As String, strFolderpath As String
Dim lngIndex As Long, lngPosition As Long
Dim lngDays As Long, lngCount As Long
Dim dtmTotalTime As Date
Dim vntTemp As Variant
On Error GoTo error_exit
Set objShell = CreateObject(Class:="Shell.Application")
For Each objCell In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
If Not IsEmpty(objCell.Value) Then
strFolderpath = objCell.Text
If Right$(strFolderpath, 1) > "\" Then strFolderpath = strFolderpath & "\"
If Dir$(strFolderpath, vbDirectory) = vbNullString Then Call Err.Raise(Number:=vbObjectError, Description:="Ordner nicht gefunden.")
Set objFolder = objShell.Namespace(CVar(strFolderpath))
For lngIndex = 0 To MAX_PROPERTYS
If objFolder.GetDetailsOf(vbNullString, lngIndex) = FILE_PROPERTY Then
lngPosition = lngIndex
Exit For
End If
Next
If lngPosition = 0 Then Call Err.Raise(Number:=vbObjectError, Description:="Dateieigenschaft ''" & FILE_PROPERTY & "'' nicht gefunden.")
strFilename = Dir$(strFolderpath & "*.*", vbNormal)
Do Until strFilename = vbNullString
vntTemp = objFolder.GetDetailsOf(objFolder.ParseName(strFilename), lngPosition)
If IsDate(vntTemp) Then
dtmTotalTime = dtmTotalTime + CDate(vntTemp)
Else
lngCount = lngCount + 1
Debug.Print strFolderpath & strFilename
End If
strFilename = Dir$
Loop
lngDays = CLng(dtmTotalTime)
objCell.Offset(0, 1).Value = CStr(lngDays) & " Tage und " & Format$(dtmTotalTime - lngDays, "Hh:Nn:Ss")
If lngCount > 0 Then
objCell.Offset(0, 2).Value = CStr(lngCount) & " Datei(en) übersprungen"
Else
objCell.Offset(0, 2).Value = Empty
End If
lngDays = 0
dtmTotalTime = 0
lngCount = 0
End If
Next
sub_exit:
Set objShell = Nothing
Set objFolder = Nothing
Exit Sub
error_exit:
MsgBox "Fehler: " & CStr(Err.Number) & vbLf & vbLf & Err.Description, vbCritical, "Fehler"
Resume sub_exit
End Sub


Anzeige
AW: Ergänzung in Makro
25.03.2023 20:42:14
El-Ti
Hallo JoWE,

Danke für Deine Antworten. Habe mal versucht, das "Const FILE_PROPERTY = "Länge" & Const MAX_PROPERTYS = 400 bei mir einzubauen. Das einzige was jetzt Neu angezeigt wurde, ist in der Überschrift die "Länge". Aber die Längenangaben in der Spalte fehlen halt.

Viele Grüße
Elfriede


AW: Ergänzung in Makro
25.03.2023 20:49:14
JoWE
hmm, schade.
wie schon erwähnt, hatte den Code nur aus reinem Interesse kopiert, jedoch nie selbst getestet.
Also: Abwarten, vllt. räusperte such Nepumuk ja noch dazu.
Ich stelle Deine Frage mal auf 'offen'.
Gruß
Jochen


Anzeige
AW: Ergänzung in Makro
25.03.2023 21:13:51
volti
Hi Elfriede,

ich habe Dir das mal eingebaut, wenn auch etwas mühselig durch Nepumuks code zu gehen.
Teste es mal.
In der Txt mal interessehalber die Eigenschaften mit Nummern.

Eigenschaften.txt

Eigenschaften.xlsm

Gruß
Karl-Heinz


AW: bei mir funktionierts super, danke
25.03.2023 21:57:54
Jowe


AW: Ergänzung in Makro
25.03.2023 21:58:17
El-Ti
Hallo Volti,

habe jetzt mal ein paar Test gemacht, wobei sich herausgestellt hatte, dass die "Länge" jetzt angezeigt wird, aber "Bildhöhe & Bildbreite nicht mehr.

Viele Grüße
Elfriede


Anzeige
AW: Ergänzung in Makro
25.03.2023 22:17:30
volti
Hi,

vielleicht habe ich was kaputt gemacht. Hier ein Update:

Eigenschaften.xlsm

Gruß KH


AW: Ergänzung in Makro
25.03.2023 23:08:43
El-Ti
Hallo Volti,

habe noch mal ein paar Test gemacht, alles wird angezeigt, so wie gewünscht. Werde noch ein paar Anzeigen an eine andere Stelle plazieren. Aber das werde ich schon noch hinkriegen. Wenn nicht, melde ich mich halt wieder.
Also, nochmals vielen Dank und ...

Viele Grüße
Elfriede


AW: Ergänzung in Makro
26.03.2023 08:24:27
volti
Moin,

ich sehe gerade, dass mir beim Update die Überschrift wieder abhanden gekommen ist.

Aber das hast Du sicher schon selbst nachgepflegt, ansonsten...

.[B2:M2] = Array("Ordner", "Name", "Größe", "ErstellDatum", "Uhrzeit", "ÄnderungsDatum", _
"Uhrzeit", "Letzter Zugriff", "Uhrzeit", "Bildhöhe", "Bildbreite", "Laufzeit")


Schönen Sonntag KH


Anzeige
AW: Ergänzung in Makro
26.03.2023 11:22:52
JoWE
...war aber, genau wie Höhe und Breite, kein wirkliches Problem.
Daumen hoch!
Gruß
Jochen


AW: Ergänzung in Makro
26.03.2023 12:47:51
El-Ti
Hallo Volti und JoWe,

Danke Euch Beiden für Euere Bemühungen. Ich habe diese Änderungen bereits gemacht. Dies ist für mich kein so großes Problem gewesen. Nur wenn es halt um ausgesprochene Eingriffe in den Programm-Code geht, da habe ich natürlich meine Schwierigkeiten. Aber es gibt da ja noch ein paar "Gut-Menschen" im Forum, die einem da bei solchen Problemen behilflich sind.
Wenn ich Euch noch mal bemühen könnte, wäre das Super.
In einem anderen Makro hätte ich auch noch ein Problem, das meines Erachtens für Änderungen der Dateieigenschaften für mich besser geeignet wäre und zwar geht es dort auch um die Erweiterung mit der "Länge".
Es gibt da zwei Makros, wo aber unterschiedliche Ergebnisse abliefern. Das eine gibt nur Dateien aus ohne Ordner und Unterordner, aber mit der "Länge". Das zweite Makro gibt alle Dateien aus mit Ordner und Unterordner, aber ohne die "Länge". Jetzt habe ich versucht, diesen Teil des Codes ".Cells(LastBlankCell, 6) = GetFileDetails(FileItem, 27) 'Length ' Dateilänge" aus dem ersten Makro in das zweite Makro zu übernehmen. Geht aber nicht, gibt Fehlermeldung aus: "Laufzeitfehler 424, Objekt erforderlich". Ich habe unter "Verweise" beide Makros verglichen und beide haben die selben Objekte angehakt.
Meine Frage dazu wäre: Was kann das für ein "Objekt" sein, das da noch erforderlich ist?

Viele Grüße
Elfriede


Anzeige
AW: Ergänzung in Makro
26.03.2023 13:05:32
JoWE
lade doch bitte Deine Arbeitsmappe mit den beiden Makros hoch.
Gut wäre es auch, wenn Du darin das Wunschergebnis zeigen könntest.
Gruß
Jochen


AW: Ergänzung in Makro
26.03.2023 13:56:46
El-Ti
Hallo Volti und JoWe,

kann ich die Makros einfach so hochladen, weil die ja nicht vom Herber Forum sind???
Die Makros stammen auch aus dem Internet von "ExcelBaby.com " und sind auch so im "Kopf" beschriftet.

Viele Grüße
Elfriede


AW: M.E. ist das erlaubt oT
26.03.2023 17:54:43
Jowe


AW: M.E. ist das erlaubt oT
26.03.2023 19:19:31
El-Ti
Hallo Volti und JoWe,

habe jetzt die Datei hochgeladen.

Viele Grüße
Elfriede

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


Anzeige
AW: Versuch
27.03.2023 13:31:52
El-Ti
Hallo Jowe,

habe gerade Deinen "Versuch" getestet und ich muss sagen, gute Arbeit abgeliefert. Was für mich sehr wichtig ist, dass ich jetzt auch ohne Probleme, Dateierweiterungen einfügen kann. Was ja bei Nepomuks Makro sich für mich etwas schwieriger gestaltet, ist hier einfacher.
Was noch zum Glück fehlen würde, wäre die flexible Auswahl der Ordner bzw. Laufwerke. Falls das noch machbar wäre. Dafür schon mal vielen Dank im voraus.

Viele Grüße
Elfriede


Anzeige
AW: Versuch
27.03.2023 15:35:53
El-Ti
Hallo Jowe,

soweit ist alles OK.

Festgestellt habe ich:

Beim abbrechen der Ordnerauswahl kommt dann die Fehlermeldung

LZ Fehler 5

Ungültiger Prozeduraufruf oder ungültiges Argument

Set objFolder = fso.GetFolder(FolderPath)

Beim Makro "Listfile" werden jetzt die Spalten der Länge der auszugebenden Daten angepasst. Kann man das auf Standard setzen?

Wenn möglich bitte die Ausgabe der Daten beginnend bei Zeile (3) setzen.

Viele Grüße
Elfriede


AW: Versuch
27.03.2023 21:24:17
El-Ti
Hallo Jowe,

zu diesem LZ Fehler kann ich vermelden, dass der nicht mehr aufgetaucht ist. Bemerkt habe ich aber, dass bei Makro1, nur 1x "Abbrechen" drücken und bei Makro2, die "Abbrechen" Taste 2x gedrückt werden muss. Der Beginn der Eintragungen in Zeile 3 erfolgt zwar, aber immer nach Wechsel eines Ordners oder einer neuen Datei, erfolgt eine Leerzeile.

Viele Grüße
Elfriede


AW: Versuch
28.03.2023 13:12:04
El-Ti
Hallo Jochen (Jowe),

jetzt muss wirklich Schluss sein, denn es gibt auch zu mindestens momentan nichts mehr zu verbessern bzw. zu berichtigen. Alle "Probleme" wurden von Dir beseitigt und gelöst und deshalb gebührt Dir auch ein "Riesendank" für Deine Geduld mit mir.
"Piet" hat sich auch schon dementsprechend über Deine Arbeit positiv ausgelassen und deshalb "Ehre, wem Ehre gebührt"!!!
In diesem Sinne ... nochmals vielen Dank.

Viele Grüße
Elfriede


AW: Danke für die Rückmeldung oT
28.03.2023 13:18:12
JoWE


AW: Ergänzung in Makro
26.03.2023 21:34:30
Piet
Hallo Elfried

ein mordslanger Thread, ich habe noch nicht alle Antworten gelesen, bekam aber auch keine Länge angezeigt.

Meine Erfahrung -- Je nach Excel Version und wie die Datei gespeichert wurde muss man 2 verschiedene Indexe ausprobieren 21, 22 oder 27, 28 für Länge + Bitrate der MP4 Datei. Warum das so ist?? Kann ich dir nicht beantworten!! Erfahrung!
Probiere deinen Code bitte mal mit beiden Indexen aus, einer davon sollte klappen!

mfg Piet


AW: Ergänzung in Makro
26.03.2023 22:03:44
El-Ti
Hallo Piet,

zuerst Danke für Deine Hilfe. Das Problem mit der "Länge" hat sich bei dem einen Problem Dank Jowe & volti zufriedenstellend erledigt. Ich würde gerne noch in einem ähnlich gelagerten Makro, dieses Problem mit der "Länge" auch lösen lassen. Dazu habe ich ja extra eine Datei mit zwei Makros hochgeladen. Wenn Du willst, kannst Du dir das mal anschauen.
Text dazu wäre in: "El-Ti vom 26.03.2023 12:47:51" nach zu lesen.

Viele Grüße
Elfriede

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


AW: Ergänzung in Makro
27.03.2023 22:43:02
Piet
Hallo Elfriede

der Fehler liegt wie ich es getestet habe an nur einer Stelle im Code. Schau bitte mal hier:
'.Cells(LastBlankCell, 6) = GetFileDetails(FileItem, 27) 'Length ' Dateilänge
Cells(LastBlankCell, 6) = GetFileDetails(oFile, 21) 'Length ' Dateilänge
Ob der Index bei dir 21 oder 27 ist must du bitte testen. Ich arbeite leider mit XP, der will 21

For Each oFile In oFolder.Files - Bei GetAttr musst du immer die richtige Variable benutzen!!
Vermutlich wurde die obere CodeZeile aus einer For Next mit "FileItem" kopert. So kam der Fehler!

mfg Piet


AW: Ergänzung in Makro
27.03.2023 22:56:41
Piet
Hallo Elfriede

ich lade dir mal meine Video Datei hoch, die hat 4 Tabellen und eine Übersicht, mit 2 Codes.
Du kannst eine uralte Dir Version oder den neuen FSO Code benutzen. mit grossem Unterschied.
Bie vielen Videos ist der alte Dir Code von 1995 schneller als FSO; aber Dir findet keine versteckten Files.

Bei der Übersicht kannst du Dateien sortieren. Ich benutze es um doppelte Dateien aufzuspüren!
Dazu sortiert man die Dateien nach Text (Dateiname) und drückt den Button "dopp". für doppelte
https://www.herber.de/bbs/user/158471.xls

mfg Piet


AW: Ergänzung in Makro
27.03.2023 23:25:04
Piet
Hallo Elfriede

ich habe mir gerade die Beispieldatei von Jochen angesehen, bin sehr beeindruckt was er alles auflistet!
Seinen Code Fehler kannst du sehr leicht beseitigen, ich sage dir wie. Setze meinen Befehl hinter diesen:
If .Show Then PathSpec = .SelectedItems(1) & "\"
If Not .Show Then MsgBox "Keine Auswahl!": Exit Sub

@ Jochen alle Achtung für deinen Code, ich habe was dazu gelernt. Bei meinem Code fehlten bei einigen Video Dateien Länge und Bitrate. Ich wusste nie warum? Durch dein Beispiel sah ich den Unterschied zwischen MP4 Dateien und VLC Media Files. Da fehlen offenbar diese Attribute! Weisst du warum??

Interessant zu wissen ...

öfg Piet


AW: Fremde Makro nutzen
27.03.2023 23:33:37
Piet
Hallo Elfriede

zu deiner letzten Frage, Makros die du im Internet findest kannst du meines Wissen Privat benutzen.
Zu beachten ist ein Copyright! Aber nur wenn du diese Codes Gewerblich benutzen willst!

Sollte ich mich irren bitte ich die Kollegen höflich mich zu berichtigen!

mfg Piet


AW: Fremde Makro nutzen
28.03.2023 13:41:50
El-Ti
Hallo Piet,

auch Dir recht herzlichen Dank. Aber Jochen hat bereits gute Arbeit geleistet und das hast Du ja auch Jochen mitgeteilt.
Ein paar Worte zu Deiner Video Sammlung möchte ich noch anmerken, dass die natürlich sehr ausführlich ist. Mir geht es da mehr um eine eigene "MediaThek" auf zu bauen und da haben sich natürlich schon ein paar TB Daten an Videos angehäuft. Mit diesem Makro kann ich jetzt jede externe Festplatte einlesen und als Tabelle abspeichern. Somit kann ich immer nach vollziehen, auf welcher FP sich die Filme befinden.(falls ich sie überhaupt habe).

Viele Grüße
Elfriede


AW: Dein Lob gebührt mir nicht...
28.03.2023 12:30:26
Jowe
...weil das Lob eigentlich Nepumuk und Volti zusteht.
Ich habe nur etwas dran rumgebastelt.
Gruß
Jochen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige