How to check whether an Excel document contains macro?

3 Nov 20252 minutes to read

You can check whether the Excel document contains macro using HasMacros property of IWorkbook. The value true indicates that the Excel document has a Vba project.

The following code illustrate how to check whether an Excel document contains macro using XlsIO.

using (ExcelEngine excelEngine = new ExcelEngine())
{
  //Instantiate the excel application object.
  IApplication application = excelEngine.Excel;

  //Opening form module existing workbook
  IWorkbook workbook = application.Workbooks.Open("Test.xls");
  IWorksheet sheet = workbook.Worksheets[0];

  //Check macro exist
  bool IsMacroEnabled = workbook.HasMacros;     

  // Save the workbook
  workbook.SaveAs("Output.xls");
}
using (ExcelEngine excelEngine = new ExcelEngine())
{
  // Instantiate the excel application object.
  IApplication application = excelEngine.Excel;

  // Opening a workbook
  IWorkbook workbook = application.Workbooks.Open("Test.xls");
  IWorksheet sheet = workbook.Worksheets[0];

  //Check macro exist
  bool IsMacroEnabled = workbook.HasMacros;        

  //Save the workbook
  workbook.SaveAs("Output.xls");
}
Using excelEngine As ExcelEngine = New ExcelEngine()
  'Instantiate the excel application object.
  Dim application As IApplication = excelEngine.Excel

  'Opening a Workbook
  Dim workbook As IWorkbook = application.Workbooks.Open("Test.xls")
  Dim sheet As IWorksheet = workbook.Worksheets(0)

  'Check macro exist
  Dim IsMacroEnabled As Boolean = workbook.HasMacros            

  Save the workbook 
  workbook.SaveAs("Output.xls")
End Using

See Also