It's not the kind of programming I do, so I don't understand why this would be so. When you pass an cell to a UDF, the default is to pass it by reference. When the argument is a variant data type, this usually means that the variable essentially becomes a range object specifying that particular cell. Most of the time, when we use the argument name, VBA can correctly assume that we mean "the value contained in cell argument." In this case, I'm not sure that is true. I tried something that recognized the arguments as "range objects" then used the value property to explicitly tell VBA to use the value of the cell.
Set objFolder = objShell.Namespace(sPathWaves.value)
    Set objFolderItem = objFolder.ParseName(sFilename.value)
This seemed to work for me.