Given what you're tried I assume you're familiar with the Unicode Bug. Others can provide better summaries of that than I can.
More generally, though, do the shortpaths themselves contain unicode characters or something that will be treated differently between Tk, perl and the OS?
Another option is to pass Spreadsheet::ParseXLSX::parse a file handle. It checks if the file argument is a file handle and acts accordingly, so if you can open the file using Win32::LongPath::openL then that will avoid the standard open call (assuming that is the cause of the error).