Bhagyashree Chaudhari - Member 10473634 Ответов: 3

Как добавить макрос в рабочий лист excel с помощью библиотеки Epplus ?


У меня есть один макрос под названием "countMacro" и одна функция под названием "countCell()"
Я проверил в excel sheet, что он работает нормально.
Но я хочу добавить эту функцию/макрос с помощью C#, во время выполнения я должен добавить макрос в динамический excel, и макрос будет запущен, и результат будет показан на ячейке.
Я использую библиотеку Epplus.
ответить.
Спасибо.

3 Ответов

Рейтинг:
2

Andrzej Martyna

Решение 3 почти нормально (для EPPlus 4.5.3.3).
После открытия Visual Basic вы можете увидеть, что Module1 помещается не внутри "модулей", а внутри "объектов Microsoft Excel" вместе с листами. Из-за этого макросы не рассматриваются как исполняемые из Excel (например, после нажатия клавиш Alt+F8).

Здесь вы можете увидеть модификацию, которая помещает Модуль1 туда, где он должен быть:

var xlPack = new ExcelPackage(excelFile);
xlPack.Workbook.CreateVBAProject();
var module = xlPack.Workbook.VbaProject.Modules.AddModule("Module1");
module.Code = "Sub countMacro()\r\n ... Place Code Here ... \r\nEnd Sub\r\n";


КСТАТИ. Я рекомендую поместить макрокод в ресурсы .NET и загрузить его:

var embeddedProvider = new EmbeddedFileProvider(Assembly.GetExecutingAssembly());
using (var reader = embeddedProvider.GetFileInfo("Resources/ExcelMacros.vb").CreateReadStream())
using (var textReader = new StreamReader(reader))
{
    xlPack.Workbook.CreateVBAProject();
    var module = xlPack.Workbook.VbaProject.Modules.AddModule("Module1");
    module.Code = textReader.ReadToEnd();
}


Рейтинг:
1

navi_s_Patil

привет,
http://www.nullskull.com/articles/create_macro_at_runtime_in_dotnet.asp[^]
думаю, это вам поможет. Но в этой статье их используют Interop.Microsoft.Office.Core.dll чтобы создать excel таким образом, используя это, вы можете добавить макрос в excel.


Bhagyashree Chaudhari - Member 10473634

Спасибо за ответ .
Я использовал библиотеку Epplus для загрузки моих данных в лист Excel , теперь я хочу добавить макрос в лист excel с помощью Epplus library.is есть ли какой - нибудь способ сделать это ?
Спасибо.

navi_s_Patil

привет,
EPPLUS не будет поддерживать макросы VBA,
http://codingsense.wordpress.com/2009/05/11/create-execute-and-delete-macro-in-excel-using-c/ проверьте dis link, и вы также можете загрузить данные с помощью Microsoft.Офис.Взаимодействие.Жаль, что Excel гораздо же, как epplus.

Brady Kelly

EPPlus поддерживает *создание* макросов. См. решение 3.

Рейтинг:
1

dgjusa

ExcelPackage xlPack = new ExcelPackage(excelFile);	// Open or Create the File
// Add VBA Code
xlPack.Workbook.CreateVBAProject();			// Can not append VBA Projects.Multiple "Code" can be added. See "https://github.com/pruiz/EPPlus/blob/master/SampleApp/Sample15.cs".
xlPack.Workbook.CodeModule.Name = "Module1";
xlPack.Workbook.CodeModule.Code = "Sub countMacro()\r\n" +
" ... Place Code Here ... \r\n" +
"End Sub\r\n";


Patrice T

Всего на 3 года опоздал

Andrzej Martyna

Но все равно полезно. Я нашел его сегодня, и это именно то, что я искал. Чувство времени в Интернете не так очевидно, как в реальной жизни ;)