Hallo,
vielleicht liegt es am W10-Update...
In meinem VBA-Code kann ich nicht mehr aus das Shell-Object zugreifen.
Dim objShell As Object
Dim objFolder As Object
sfolder = TopDir & "\" & SDir & "\" & FDir
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(sfolder)
For Each objFolderItem In objFolder.Items
wird zwar ausgeführt, aber danach ist objShell = gar nichts, objShell = nothing und es knallt bei for each...
sfolder ist zu diesem Zeitpunkt z.B.
X:\va1\0\blabla
und dieses Verzeichnis existiert auch.
Haben die Redmonder etwas geändert oder wo liegt der Fehler?
Vor dem W10-Update hat's noch problemlos geklappt.
Hallo,
ich denke mal dass die Deklaration von objFolderItem falsch ist, das dürfte imo kein Objekt sein sondern ein Variant (Array)
So funktionierts bei mir:
Sub test()
Dim objShell As Object
Dim objFolder As Object
Dim FolderItem As Variant
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace("C:\")
For Each FolderItem In objFolder.Items
Debug.Print objFolder.getDetailsOf(FolderItem, 0)
Next FolderItem
Set objFolder = Nothing
Set objShell = Nothing
End Sub
Gruß Andreas
Hallo,
Set objFolder = objShell.NameSpace(sfolder)
mag als Parameter keine Variable vom Datentyp String (sfolder). Diese sollte als Variant deklariert sein.
Hallo!
Ich tippe auf eine explizite Byval-Übergabe für den Parameter der NameSpace-Funktion.
Zum Ausprobieren:
sfolder = "C:\"
Set objFolder = objShell.NameSpace(sfolder)
debug.print "sfolder", objFolder is Nothing
Set objFolder = objShell.NameSpace("C:\")
debug.print """C:\""", objFolder is Nothing
Set objFolder = objShell.NameSpace(sfolder & "")
debug.print "sfolder & """"", objFolder is Nothing
Set objFolder = objShell.NameSpace((sfolder))
debug.print "(sfolder)", objFolder is Nothing
mfg
Josef
OK - Problem gelöst.
Ich hatte im alten Sourcecode meine Deklaration
dim sfolder
gesehen und auf
dim sfolder as string
geändert, weil ich glaubte, das schlicht vergessen zu haben...
Mit
dim sfolder as variant
Klappt es jetzt.