Excel for WinForms now supports OpenXMLMacro file format, with which you can save and load Macros-enabled Excel files in C1Excel. Alternately, you can also load and save such files from and to *.xlsm file extension. The VBA Code is loaded in Binary format into xlsm files.
If you're saving your macro-enabled files to '*.xlsm', you don't need to specify FileFormat OpenXMLMacro to save the file. You can save the file using following code:
Alternately, if you want to save macro enabled files to a stream or any other excel extension, you can save the file using:
Here's an example of how C1Excel loads and saves Macro-enabled Excel file.
The Macro calculates Last Day of a Month from a Date column. C1Excel loads and saves file using following code
// Copy Macro enabled Excel File string xlsFileName = "..\\..\\XlsxTestBin.xlsm"; c1XLBook1.Load(xlsFileName); c1XLBook1.Sheets[0, 0].Value = "It is copy!"; xlsFileName = xlsFileName.Replace(".xlsm", "Modified.xlsm"); c1XLBook1.Save(xlsFileName);
Open the Modified.xlsm and you'll find the Macros preserved.
Note: C1Excel can load and save only opaque copy of Macro code. Also, C1Excel does not support any properties to add VBA code. Macros will be deleted if you save a file having macros to .xlsx/xls file.