Запуск макроса в книге xlsm - C#

Узнай цену своей работы

Формулировка задачи:

Нашел много источников но ни один не отработал у меня. Подозреваю, что не правильно указываю синтаксис возле имени макроса Макрос сохранен в отдельном модуле Splitting под именем Split На скринах ошибка и VBA в книге Часть кода C#:
static void exceling()
        {
            excelApp.Visible = false;
            excelBook = excelApp.Workbooks.Open(attfile);
 
            foreach (Excel.WorkbookConnection cnn in excelBook.Connections)
            {
                cnn.OLEDBConnection.BackgroundQuery = false;
            }
 
            excelBook.RefreshAll();
            excelApp.Run("C:\\Users\\AKravchenko\\Desktop\\Оперативный_отчет\\Оперативный_МАКРО.xlsm!Splitting.Split", Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing);
            excelBook.Save();
            excelBook.Close(0);
            excelApp.Quit();
 
        }
Буду благодарен за помощь

Решение задачи: «Запуск макроса в книге xlsm»

textual
Листинг программы
        static string attfile = @"C:\Users\Оперативный_отчет\Оперативный_МАКРО.xlsm";
        static void Main()
        {
            exceling();
        }
 
        static void exceling()
        {
 
            Excel.Application xlApp = new Excel.Application();
            xlApp.Visible = false;
            Excel.Workbook xlWorkBook;
            xlWorkBook = xlApp.Workbooks.Open(attfile);           
 
            foreach (Excel.WorkbookConnection cnn in xlWorkBook.Connections)
            {
                cnn.OLEDBConnection.BackgroundQuery = false;
            }
 
            xlWorkBook.RefreshAll();
            xlWorkBook.Save();
            xlWorkBook.RefreshAll();
            xlWorkBook.Save();
 
            xlApp.Run("Оперативный_МАКРО.xlsm!Splitting.Split");
            xlWorkBook.Save();
 
            xlWorkBook.Close(0);
            xlApp.Quit();
 
            releaseObject(xlApp);
            releaseObject(xlWorkBook);
 
        }
 
        private static void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
            }
            finally
            {
                GC.Collect();
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.714 из 5
Похожие ответы