/// <summary> /// Loads project invocation rules for the active workbook. /// </summary> private void ReadRules() { Excel.Workbook workbook = ActiveWorkbook; Excel.Worksheet ws = GetRulesWorksheet(workbook); if (ws == null) { Mode = ExecutionMode.Synchronous; Rules = new ProjectInvocationRule[0]; } else { NamedRangeProvider nrp = NamedRangeProvider; nrp.Clear(); var prm = new PersistedRuleManager(); prm.Load(this, nrp, ws, out m_mode, out m_rules); RationaliseRuleIds(); UpdateExecutionState(); } }
/// <summary> /// Stores the active workbook's current project invocation rules within the workbook. /// </summary> public void WriteRules() { ProjectInvocationRule[] rules = Rules; Excel.Workbook wb = ActiveWorkbook; Excel.Worksheet ws = GetRulesWorksheet(wb); if (ws == null) { if (rules == null || (!rules.Any() && Mode == ExecutionMode.Synchronous)) return; ws = (Excel.Worksheet)wb.Worksheets.Add(); ws.Name = s_rulesSheetName; ws.Visible = Excel.XlSheetVisibility.xlSheetVeryHidden; } var prm = new PersistedRuleManager(); prm.Save(ws, Mode, rules); }