Jorge, ten en cuenta que estos objeto cuentan desde el elemento 0, revisa si no es eso, porque yo uso Shell en Windows 10 64bits, deje de usar las Dll de UnZip y Zip porque me dieron problema en un caso con un cliente, ya ni recuerdo como era la cosas, pero por eso me pasea usar shell.
Aquí te paso el procedure de la clase que uso, que comprime y descomprime con Shell.
Lparameters tcFileZip As String, tcFolDestino As String
Local loShell, loZip, loItems, loFile, loDestino, nItem
*-- Cargamos el archivo comprmido
loShell = CreateObject("Shell.Application")
loZip = loShell.NameSpace(tcFileZip)
loItems = loZip.Items()
*-- Cargamos la carpeta de destino y descomprimimos
loDestino = loShell.NameSpace(tcFolDestino)
for nItem = 0 to loItems.Count-1
loFile = loItems.Item(nItem)
loDestino.CopyHere(loFile.Path)
Next