我有一个函数将值写入两个链接的Excel电子表格中。这个函数然后在第二个电子表格中运行一个宏。
在代码的第一部分(见下面)中,我试图做两件事:
禁止Excel中的警告
当Matlab启动这些工具时,使Excel不可见。
如果它是可见的,我会收到来自Excel的提示来更新链接,我认为将警报显示为false会予以照顾。
如果我使窗口不可见,则在启动宏Excel.Run(createMTXMacro); % Run macro时遇到错误
error MATLAB:COM:E2148140012
我试图弄清楚为什么我无法运行能见度关闭。
%% Open excel tools
h = waitbar(0,'Initializing Excel Tools');
Excel = actxserver('excel.application');
Workbooks = Excel.Workbooks;
Excel.DisplayAlerts = false; %Supress Excel warnings
Excel.Visible = 0;
Excel.ScreenUpdating = false;
waitbar(1/6,h,'Opening Matrix Form');
mtxWorkbook = Workbooks.Open(mtx_form_path);
mtxWbk = Excel.ActiveWorkbook;
waitbar(2/6,h,'Opening Input Form');
inpWorkbook = Workbooks.Open(inpt_form_path);
inpWbk = Excel.ActiveWorkbook;
%% Write to input form
waitbar(3/6,h,'Writting to Input Form');
inpWorkbook.Activate;
inpWorkSheets = inpWorkbook.Sheets;
inpInputSheetName = 'inputs';
inpInputSheet = inpWorkSheets.Item(inpInputSheetName);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Some code here to write into the first spreadsheet
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Write to matrix creator
waitbar(4/6,h,'Writting to Input Form');
%Matrix Worksheet
mtxWorkbook.Activate;
mtxWorkSheets = mtxWorkbook.Sheets;
%Input Load Case Selection on Matrix Worksheet
mtxInputSheetName = 'Input';
mtxInputSheet = mtxWorkSheets.Item(mtxInputSheetName);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Some code here to write into the second spreadsheet
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
createMTXMacro = 'CreateMatrixFiles';
Excel.Run(createMTXMacro); % Run macro
%% Close Excel instances
waitbar(5/6,h,'Closing Excel tools');
mtxWbk.Save;
mtxWbk.Close(false); %Close file
inpWbk.Save;
inpWbk.Close(false); %Close file
Excel.Quit; %Quit Excel
Excel.delete;
waitbar(6/6,h,'Closed Excel tools');
close(h)