Add support for preserving and exporting the macros in a macro-enabled workbook.

Macros are pieces of code written in Visual Basic for Applications (VBA) which are used to automate repetitive tasks in excel. The macros are part of the excel file. When a file contains a macro its extension becomes xlsm.

SpreadProcessing should be able to import and export xlsm files and edit the macros in them.

The value of Worksheet.UsedCellRange could be calculated during the import of the workbook - as all cells are processed anyway. This will improve the performance of the first usage of this property, which is very common scenario. Also xlsx documents can have optional 'dimension' element which is used to specify the used cell range:

When I need to populate a cell that I find using a DefinedName I should parse RefersTo to get Worksheet name. But DefinedName class contains Scope property which has CurrentWorksheet and Workbook properties (internal). It would be very useful if these properties could be public.