MATLAB: Writetable() has write permission problems when run as scheduled task; save() does not

MATLABpermissionsscheduled taskwritetable

I have a script that checks a folder for accumulating images, processes them, and builds a table of data about the images. The script then saves the table in two ways: first, as a .mat file via the MATLAB save() function, and then as an Excel spreadsheet via the writetable() function into the very same folder.
The script works perfectly in an interactive MATLAB window.
However, when I try to run the script via Windows' Task Scheduler, the writetable part fails due to a permissions error while the save() works just fine to the very same location. I have given the scheduled task my user credentials, and the fact that the .mat file gets written suggests to me that the script has write permission the folder. writetable chokes, however.
The error I get (seen via the -logfile parameter to MATLAB in the scheduled task) is:
Unable to save the workbook to file 'D:\ImageList2017-03-30.xlsx'. Check
that write permissions are available, there is sufficient disk space, and
the file can be written to or created.
And the error points to:
C:\Program Files\MATLAB\R2016b\toolbox\matlab\iofun\writetable.m line 121.
This is on Windows 7, writing to a local disk (eventually I want it to work with an UNC path to a shared folder), using MATLAB R2016b.
Ideas?
Edit for additional information: I changed the filetype of the file being written by writetable() to be .txt, and that worked just fine with no permission errors. So this seems to be an issue with writing .xlsx. Is Microsoft Office misbehaving here?

Best Answer

  • I found a bizarre, totally non-intuitive solution that worked. From Technet.microsoft.com
    You have to create a folder (or two on a 64bit-windows):
    (32Bit, always)
    C:\Windows\System32\config\systemprofile\Desktop
    (64Bit)
    C:\Windows\SysWOW64\config\systemprofile\Desktop
    I have had the same problem and this was the only solution i have found.
    After creating the two above-named folders, the MATLAB script's writetable() call now correctly creates the .xlsx file.