private ActiveSub(Client c, string messageType, AMPSExcel.AMPSAddin.SubscriptionDefinition d, Excel.Workbook workbook) { _def = d; _client = c; _messageType = MessageTypeFactory.forName(messageType); string[] rangeParts = d.WorksheetRange.Split('!'); _worksheet = workbook.Worksheets[rangeParts[0]]; Excel.Range where = _worksheet.Range[rangeParts[1]]; _row = where.Row; _col = where.Column; _columns["SOWKey"] = where.Column; _workbook = workbook; where.Value = "AMPS Subscription: " + d.Name; _empty.Clear(); int count = _worksheet.Rows.Count; for (int i = _row; i < count; ++i) { var cell = _worksheet.Cells[i, _col]; if (!string.IsNullOrEmpty(cell.Text)) { string text = cell.Text; if (text == "(deleted)") { _empty.Enqueue(i); } else { _rows[text.Trim('|')] = i; } } else { _lastrow = i; break; } } _cmdId = c.sowAndDeltaSubscribe(x => ReceivedMessage(x), d.Topic, d.Filter, 100, true, true, 1000); Globals.AMPSAddin.Application.WorkbookBeforeClose += new Excel.AppEvents_WorkbookBeforeCloseEventHandler(Application_WorkbookBeforeClose); workbook.BeforeClose += new Excel.WorkbookEvents_BeforeCloseEventHandler(workbook_BeforeClose); }