Good to hear it works.
openL is written to handle paths like the ones you are getting from the system. Spreadsheet::ParseXLSX just uses a plain open call when passed a file name, and this cannot handle some of the paths that are being passed (assuming your short paths retain some of the unicode characters).
You probably should not even need to convert the paths to short paths if you use openL to generate the file handle. That would simplify your code (if that's an issue).