Подтвердить что ты не робот

Можем ли мы написать макрос в С# для Excel

Мне нужно пройти около 25 листов в excel для выполнения операций. Я делаю это с помощью vba и нахожу его очень медленным, поэтому хотел знать, могу ли я использовать С#, и если это поможет мне ускорить этот процесс.

4b9b3361

Ответ 1

Вызов С# из книги Excel, такой как макрос VBA, вы не можете

Откройте книгу Excel из приложения С# - вы можете. Это называется Microsoft Visual Studio Tools for Office (VSTO)

Ответ 2

Хотя вы можете написать эквивалент в С# на ваш текущий макрос VBA, используя VSTO, я очень сомневаюсь, если он будет иметь какое-то существенное отличие от производительности.

В обоих случаях вы будете манипулировать одними и теми же COM-объектами Excel, и время выполнения, вероятно, будет очень похоже.

Ваша производительность будет зависеть в основном от тех методов, которые вы используете для управления объектами Excel. В качестве простого примера вы можете присвоить значения из диапазона Excel двумерному массиву в одном утверждении: это намного быстрее, чем повторение строк и столбцов кода и копирование значений в ваш массив по одному.

Я бы порекомендовал вам опубликовать бит кода VBA, который вы считаете слишком медленным, и попросите совета по повышению производительности.

Ответ 3

Вы можете попробовать создать надстройку ESharper для написания команды автоматизации Excel на С#. Это проще, чем создание отдельного приложения С# или надстройки, и у вас будет доступ к объектной модели Excel и API Excel C с дополнительными возможностями оптимизации производительности.

Ответ 4

Какие операции вы делаете точно? Во-первых, вам не нужно записывать код VBA самостоятельно. Вы можете просто записать макрос в книгу и сохранить его в C:\Program Files\Microsoft Office\Office12\Xlstart. Excel запишет макрос и сделает его доступным на всех листах, которые вы открываете.

Вы также можете настроить автоматически сгенерированный код VBA в вышеупомянутом процессе в соответствии с вашими потребностями.

Лично я не думаю, что писать надстройку С# для выполнения этой работы ускорит задачу. VBA - это язык, специально предназначенный для работы с объектной моделью Office. Если это не работает достаточно быстро, вам нужно посмотреть, какую операцию вы выполняете?

Я думаю, что создание надстройки С# для управления объектной моделью Excel и ее сохранение слишком много. Это также будет связано с большой кривой обучения.