>>>? ExtractFileOrFolderInZipFile(m.ZipFile, m.FileOrFolderToExtract, m.TargetFolder) >>> >>>FUNCTION ExtractFileOrFolderInZipFile(ZipFile AS String, ToExtract AS String, Location AS String, ShellExplorer AS Object, Tree AS String) >>> >>> LOCAL ShellObject && edited >>> >>> IF PCOUNT() < 4 >>> m.ShellExplorer = CREATEOBJECT("Shell.Application") >>> m.Tree = "" >>> ENDIF >>> >>> FOR EACH m.ShellObject IN m.ShellExplorer.NameSpace(m.ZipFile + IIF(EMPTY(m.Tree),"","\" + m.Tree)).items >>> >>> IF UPPER(m.ShellObject.Name) == UPPER(m.ToExtract) >>> m.ShellExplorer.NameSpace(m.Location).CopyHere(m.ShellExplorer.NameSpace(m.ZipFile).items.Item(m.Tree + m.ToExtract)) >>> RETURN .T. >>> ELSE >>> IF m.ShellObject.IsFolder AND ExtractFileOrFolderInZipFile(m.ZipFile,m.ToExtract,m.Location,m.ShellExplorer,m.Tree + m.ShellObject.Name + "\") >>> RETURN .T. >>> ENDIF >>> ENDIF >>> >>> ENDFOR >>> >>> RETURN .F. >>> >>>ENDFUNC >>>>>