MATLAB: I keep getting the error, “Unable to write to file ‘xxxx.xlsx’. You may not have write permissions or the file may be open by another application.”

MATLABmatlab to excelwritetable

I keep receiving this error when attempting to write tables to Excel from MATLAB.
%% Velocity Tables
T1 = table(vx1,'VariableNames',{'CummulativeVelocity'});
T2 = table(vy1,'VariableNames',{'CummulativeVelocity'});
T3 = table(vz1,'VariableNames',{'CummulativeVelocity'});
T4 = table(vx2,'VariableNames',{'CummulativeVelocity'});
T5 = table(vy2,'VariableNames',{'CummulativeVelocity'});
T6 = table(vz2,'VariableNames',{'CummulativeVelocity'});
T7 = table(vx3,'VariableNames',{'CummulativeVelocity'});
T8 = table(vy3,'VariableNames',{'CummulativeVelocity'});
T9 = table(vz3,'VariableNames',{'CummulativeVelocity'});
T10 = table(vx4,'VariableNames',{'CummulativeVelocity'});
T11 = table(vy4,'VariableNames',{'CummulativeVelocity'});
T12 = table(vz4,'VariableNames',{'CummulativeVelocity'});
filename = 'Velocity2.xlsx';
writetable(T1,filename,'Sheet',1,'Range','A1');
writetable(T2,filename,'Sheet',1,'Range','C1');
writetable(T3,filename,'Sheet',1,'Range','E1');
writetable(T4,filename,'Sheet',2,'Range','A1');
writetable(T5,filename,'Sheet',2,'Range','C1');
writetable(T6,filename,'Sheet',2,'Range','E1');
writetable(T7,filename,'Sheet',3,'Range','A1');
writetable(T8,filename,'Sheet',3,'Range','C1');
writetable(T9,filename,'Sheet',3,'Range','E1');
writetable(T10,filename,'Sheet',4,'Range','A1');
writetable(T11,filename,'Sheet',4,'Range','C1');
writetable(T12,filename,'Sheet',4,'Range','E1');
Here is the code I am using. The code works fine for the first instance of writetable, but the error will come up when attempting to run any other instance. I have found that I can manually end the Excel process in Task Manager, but this has to be done every time, while also creating a second copy of the worksheet. This second worksheet is the one that has the new table written in it. So, in order to continue the process I have to rename the copy and delete the previous version.
There must be a way to either better write this code (I am still pretty green), or to add something to fix this error. I don't kow what either of these solutions would be. Also, Excel is closed for each run of writetable.

Best Answer

I've updated the answer to resolve your specific issue. Though I would suggest doing all processing in MATLAB not excel since that is what its for. With this solution all the data is stored in a cell array idt. Each cell idt{1} for example contains 1 set of test data from the accel.
idt{1} = [ax1 ay1 az1]; % quick fix - but try import your data in to one variable, rather than directly in to workspace.

idt{2} = [ax2 ay2 az2];
idt{3} = [ax3 ay3 az3];
idt{4} = [ax4 ay4 az4];
for k = 1:4
res{k} = cumtrapz(idt{k}(:,:))
res{k} = array2table(res{k}) % Convert data to table
res{k}.Properties.VariableNames = {'a1_X', 'a1_Y' 'a1_Z'} % Assign variable names for columns
writetable((res{k}),'results.xlsx','sheet',k) % Writetable to excel sheet
end
Without exporting to excel all you require is:
idt{1} = [ax1 ay1 az1]; % quick fix - but try import your data in to one variable, rather than directly in to workspace.
idt{2} = [ax2 ay2 az2];
idt{3} = [ax3 ay3 az3];
idt{4} = [ax4 ay4 az4];
for k = 1:4
res{k} = cumtrapz(idt{k}(:,:))
end
Ask a question regarding calculating velocity here and we can have a look.