I\'m trying to extract a .CAB file using Excel VBA, but I\'m getting the following error:
Run-time error \'91\': Object variable or With block variable no
Tim's answer is correct. I found an alternative, as well:
Private Function DeCab(vSource, vDest) As Long
Dim objShell, objFileSource, objFileDest As Object
Set objShell = CreateObject("Shell.Application")
Set objFileSource = objShell.Namespace((vSource)) '<-extra parentheses
Set objFileDest = objShell.Namespace((vDest)) '<-extra parentheses
Call objFileDest.MoveHere(objFileSource.Items, 4 Or 16) 'Fails here
Decab = objFileDest.Items.Count
End Function
When you place an object in parentheses in VBA, it returns the default value of the object. Apparently, objShell.Namespace
can't handle a pointer. It can only handle a string literal. Changing the signature to the following also works if you're passing in Strings:
Private Function DeCab(ByVal vSource, ByVal vDest) As Long