Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Probleme mit shell...

Begonnen von crystal, Juli 22, 2016, 23:19:34

⏪ vorheriges - nächstes ⏩

crystal

Hallo,

ich möchte gern aus Dateien einer Verzeichnisstruktur erweiterte Attribute (Bitrare, Resolution etc.) auslesen.
Die Dateien sind etwa so angeordnet:
H:\videos
H:\videos\u\
H:\videos\u\
H:\videos\u\urlaub 2009
H:\videos\u\urlaub 2009\video1.mp4
H:\videos\u\urlaub 2009\video2.mp4
H:\videos\u\urlaub 2010
H:\videos\u\urlaub 2010\video.mp4
...

Wenn ich nun dies codiere (Referenz auf shell32 ist gesetzt)
...
dim objShell as Object
oder auch
dim objShell as Shell32.Shell
(andere entsprechend)
...
    sFolder = "Urlaub 2009"
...
    sFolder ="H:\videos\u\" & sFolder
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(sFolder)

ist objFolder NOTHING.

Im Direktfenster erhalte ich seltsamerweise diese Antworten:
?objShell.NameSpace("H:")
Disk H (H:)
?objShell.NameSpace("H:\videos")
videos
?objShell.NameSpace("H:\videos\u")
u
?objShell.NameSpace("H:\videos\u\urlaub 2009")
urlaub 2009

Wo ist der Pfad geblieben?

Was ist falsch?
Was erwartet .Namespace() als Parameter?

Bei MS(DN) finde ich keine hilfreichen Aussagen (viele beziehen sich auf .NET) und auch mit VBA als zus. Suchkriterium komme ich nicht weiter.

Ich habe auch Excel-VBA-Code gefunden, der alle Attribute von Dateien auflistet. Hat auch funktioniert. Aber eine Portation nach Access ist mir nicht geglückt.

Hat jemand konkrete Erfahrung mit Shell und .GetDetailsOf... unter Access 2016?
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

daolix

Hallo
ZitatWas erwartet .Namespace() als Parameter?
Zwingend einen Varianten. Entweder sFolder als Varianten deklarieren oder durch Klammerung der Variable soetwas wie ein ByCopy erzwingen
Set objFolder = objShell.NameSpace((sFolder))

ZitatWo ist der Pfad geblieben?
Diesen musst du dir mit Hilfe des 'Parentfolder' wieder zusammensetzen.

crystal

Hi Daolix,
vielen Dank, hat sofort funktioniert!

Gruß!
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...