Нужно вставить код VBA не в модуле, а в списке листов
У меня сейчас в первом методе:
public static void CreateNewExcelFile()
{
Microsoft.Vbe.Interop.VBComponent xlMod;
Excel.Application app = new Excel.Application();
Excel.Workbook workbook = app.Workbooks.Add();
Excel.Worksheet worksheet = workbook.Worksheets[1];
worksheet.Name = "worksheet_table"
xlMod = workbook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
xlMod.Name = "ModuleBasic";
InsertionMacroVBAinFile.InsertMacroInExcel(app, xlMod);
SaveExcelFile.SaveNewExcelFile(app, workbook, worksheet, xlMod);
}
И во втором методе:
public static void InsertMacroInExcel(Microsoft.Office.Interop.Excel.Application app, Microsoft.Vbe.Interop.VBComponent xlMod)
{
string macroCode =
"Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)\r\n" +
" If Target.Column = 2 Then MsgBox "Ok" \r\n" +
"End Sub";
xlMod.CodeModule.AddFromString(macroCode);
}
Третий способ сохранения
public static void SaveNewExcelFile(Excel.Application app, Workbook workbook, Excel.Worksheet worksheet, Microsoft.Vbe.Interop.VBComponent xlMod)
{
string pathToJson = @"D:\Images\";
string result = "report_" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsm";
FileInfo fullPath = new FileInfo(pathToJson + result);
try
{
workbook.SaveAs(fullPath, Excel.XlFileFormat.xlOpenXMLWorkbookMacroEnabled,
null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, false, false, null, null, null);
}
catch (Exception)
{}
}
workbook.Close();
app.Quit();
}
, но это вставляет в модуль, а не в лист
Помогите мне, пожалуйста