In Simulink, Im trying to get the value from a cell in an Excel Spreadsheet, but everytime I try to run the model, I get this error…
Attempt to extract field 'Value' from 'mxArray'.
Why? and how do I fix it.
PS: The error comes from disp(iiTHEVALUE.Value); (right now I'm just displaying the value in the matlab command window, once I get it working, I will start to do things with it)
This is my code in a Matlab function box in Simulink…
function count_oute = Excel(counte)%#codegen
%%Lets Simulink know to read commands as Matlab commands
%Keep at top
coder.extrinsic('pwd');coder.extrinsic('strcat');coder.extrinsic('actxserver');coder.extrinsic('invoke');coder.extrinsic('get');coder.extrinsic('set');coder.extrinsic('delete');%%Global Variables?
%%Editable Variables
Excel_File = 'If_actxserver.xlsx';%%Defining Variables
Current_Directory = pwd;excel_filename = strcat(Current_Directory,'\',Excel_File);%%Keeping COM.handles active through iterations in this specific function block
%Excel handle Variables
persistent h_Excel;if isempty(h_Excel) %if handle is empty, define (which it is at the start of a model)
h_Excel = actxserver('Excel.Application');endpersistent Excel_Workbook;if isempty(Excel_Workbook) %if handle is empty, define (which it is at the start of a model) Excel_Workbook = invoke(get(h_Excel, 'Workbook'), 'Open',excel_filename);end%%If first iteration
if (counte==1) set(h_Excel, 'Visible', 1); disp('Started Mathcad application');end%%Iterate on Excel
disp('Excel Iterate #');disp(counte);%%Save, Close, and Quit actxservers on last iteration
if (counte==11) iTHEVALUE = invoke(get(Excel_Workbook, 'Worksheets'),'Item','InitialVars'); iiTHEVALUE = invoke(iTHEVALUE, 'Range','A1:B4'); disp(iiTHEVALUE.Value); invoke(Excel_Workbook,'Close'); invoke(h_Excel,'Quit'); invoke(h_Excel,'delete'); disp('Excel Closed'); end%Out value is the same as the in value, just displaying again
count_oute=counte;end
Best Answer