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

VBA VS. VSTO, в чем разница, следует ли мне обновить?

Я - большой поклонник принципа KISS (держите его простым) и долгое время VBA для пользователя excel. Однако все статьи, которые я могу найти в VBA vs. VSTO (Visual Studio Tools for Office), кажутся очень сложными.

Во-первых, меня тошнит от очень плохой среды IDE, встроенной в Excel, и я ищу новую. VSTO, использующий Visual Studio, как IDE, кажется единственной альтернативой.

Итак, я пытаюсь понять, в чем разница между VBA и VSTO, чтобы знать, стоит ли мне учиться использовать VSTO?

4b9b3361

Ответ 1

Какой набор инструментов вы используете, во многом зависит от личных предпочтений, но вот некоторые вещи, которые следует учитывать:
1. Производительность: для большинства задач, связанных с Excel, VSTO работает очень медленно по сравнению с VBA из-за дополнительного слоя Interop.
2. UDF: VSTO не поддерживает UDFs 3. Объектная модель: сложнее работать с объектной моделью Excel с VSTO, чем с VBA, потому что нет .NET Macro recorder, чтобы дать вам подсказки.
4. IDE: с VSTO вы получаете доступ к последней среде Visual Studio IDE (при условии, что у вас есть лицензия Visual Studio)
5..Net Framework: VSTO предоставляет вам доступ к очень богатой и мощной платформе .NET. 6. Кривая обучения: VB.NET - это другой язык для VBA, а различия в платформе .NET и объектной модели означают, что переход не так прост, как может быть.
7. Если вы хотите перейти на визуальную студию/.NET-маршрут, я бы порекомендовал вам взглянуть на Addin Express или XLDNA, а не на VSTO: обе они имеют меньше ограничений, чем VSTO

Ответ 2

VBA в Excel дает вам все преимущества быстрого получения результатов между редактированием кода и его выполнением. Поскольку вы хороший программист VBA, вы могли бы жить без суперфункции Visual Studio (intellisense, try-catch-fanally, наследует, все объекты .NET, многопоточность...)

VSTO - это способ работать в очень хорошей IDE (Visual Studio), но я боюсь, что вы потратите много времени на переключение между VB.NET и вашим Excel. Не так прямо, как ваш VBA внутри вашего Excel.

если ваша основная цель программирования - оставаться внутри файла Excel, тогда оставайтесь с VBA. Если вам действительно нужно играть вне вашего файла Excel или если вы хотите сделать что-то, что не нужно, зависит от ваших файлов Excel, возможно, вы могли бы рассмотреть VSTO. Кроме того, VSTO является довольно новым, и документация не может быть гениальной.

Я бы остался с VBA на твоем месте. Это мое смиренное мнение. Я написал небольшое сравнение между VBA и VB.NET(VSTO): здесь разница между VB.NET и VBA !

Ответ 3

Это спустя 6 лет после того, как этот вопрос был первоначально задан, поэтому возможно, что во время ОП сравнение между этими двумя инструментами было разным, но я на самом деле очень удивлен тем, насколько благоприятны существующие ответы по отношению к VBA!

VBA интерпретируется и размещается исключительно в приложении. Преимущества здесь:

  • Кодирование может быть сделано непосредственно в приложении, не требуя внешних инструментов
  • Специальные функции приложения, такие как запись макросов, позволяют быстро создавать прототипы.
  • Вы можете использовать элементы управления ActiveX, специфичные для Excel, такие как RefEdit
  • UDF могут быть легко разработаны
  • Надстройки распространяются в виде документов (формат .xla)

Для небольших приложений и пользовательских функций VBA отлично работает. Вы можете быстро и легко создавать в Excel и все "просто работать".

Однако, если ваша программа имеет какой-либо тип сложности, было бы очень полезно изучить VSTO. Преимущества там включают в себя:

  • Возможность использовать мульти-парадигмальные языки программирования, такие как VB.NET или С#
  • Лучшая поддержка коллекций (общие списки, словари, кортежи и т.д.)
  • Поддержка потоков, асинхронное выполнение
  • Развертывание надстроек как автономных приложений
  • Возможность использовать нативные WinForms и разрабатывать неблокирующие интерфейсы

VSTO на данный момент довольно хорошо документирована:

https://docs.microsoft.com/en-us/visualstudio/vsto/create-vsto-add-ins-for-office-by-using-visual-studio

Тема производительности довольно расплывчата, но, в отличие от некоторых предыдущих ответов, это действительно зависит от ваших узких мест. Функциональная совместимость COM может увеличить накладные расходы, но в то же время модель исполнения VBA намного медленнее, чем то, что может предложить С#. В частности, если принять во внимание различные парадигмы, которые может предложить программирование VSTO, есть три приложения, в которых VSTO будет на несколько порядков быстрее, чем аналогично закодированная программа VBA.