■ウィンドウ枠の固定
function freezePanes(filename, sheetName, freezeRows, freezeColumns)
% freezeRows : 固定する先頭行数
% freezeColumns : 固定する左側列数
%
% 例:
% freezePanes("result.xlsx", "Data", 1, 0); % 1行目だけ固定
% freezePanes("result.xlsx", "Data", 1, 1); % 1行目とA列を固定
% freezePanes("result.xlsx", "Data", 2, 3); % 1~2行目とA~C列を固定
excel = actxserver("Excel.Application");
excel.Visible = false;
excel.DisplayAlerts = false;
fullFilename = fullfile(pwd, filename);
try
workbook = excel.Workbooks.Open(fullFilename);
sheet = workbook.Worksheets.Item(sheetName);
% ActiveWindowはアクティブなシートに対して設定される
sheet.Activate();
% 既存の固定・分割を解除
excel.ActiveWindow.FreezePanes = false;
excel.ActiveWindow.SplitRow = 0;
excel.ActiveWindow.SplitColumn = 0;
% 固定位置を設定
excel.ActiveWindow.SplitRow = freezeRows;
excel.ActiveWindow.SplitColumn = freezeColumns;
% 枠を固定
excel.ActiveWindow.FreezePanes = true;
workbook.Save();
workbook.Close(false);
catch ME
if exist("workbook", "var")
workbook.Close(false);
end
rethrow(ME);
end
end