Использовать VBA в приложениях Office 2007? - PullRequest
4 голосов
/ 22 сентября 2008

VBA собирается уходить в ближайшее время, как VB6? Разве я не должен разрабатывать новые приложения Office с VBA? Или мне следует разрабатывать все новые приложения Office с помощью VSTO?

Обновление: недавно прочитал эту статью .

Ответы [ 7 ]

9 голосов
/ 22 сентября 2008

Office VSTO предлагает множество дополнительных функций по сравнению с Office VBA, и хотя я не верю, что Microsoft дала понять, что собирается прекратить VBA (на самом деле, они прямо заявили , что По крайней мере, до Office 14; Office 2007 = Office 12), я думаю, что стоит перенести ваши приложения в VSTO, чтобы воспользоваться дополнительной гибкостью и мощью.

На самом деле я не думаю, что отказ от VBA был бы осуществим, так как бизнес-пользователи занимаются программированием Office на макроуровне, и я не думаю, что это скоро исчезнет. Эти люди, как правило, не имеют доступа к IDE с поддержкой VSTO.

7 голосов
/ 27 сентября 2008

VSTO имеет новые функции, но также имеет ряд существенных недостатков по сравнению с VBA.

С одной стороны, Code Access Security может затруднить развертывание приложений VSTO (это вежливо).

С другой стороны, среда разработки VSTO далеко не так доступна для опытных разработчиков, как VBA. Например, нет макро-рекордера, с которого можно начать.

И большой пример того, что .NET-взаимодействие с внешними COM-объектами не работает должным образом. Например, если вы хотите управлять другими приложениями Office (Word, PowerPoint, Outlook) из приложения Excel VSTO, вы найдете несколько копий этих приложений, работающих в фоновом режиме, по причинам, описанным в этой статье базы знаний .

Все это в сочетании с огромными инвестициями в существующие приложения VBA означает, что VBA не исчезнет в ближайшее время.

5 голосов
/ 22 сентября 2008

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

Последняя версия MS Office для Mac не поддерживает VBA, и 64-битная Windows запускает его в виртуальном 32-битном внепроцессном режиме. Так что, если вы планируете новое приложение, использующее Office в качестве платформы, VSTO - это определенно путь, но вам не нужно слишком беспокоиться об устаревшей поддержке.

Как отмечает @cori, для MS было бы огромным маркетинговым запретом просто дергать поддержку и ломать столько существующего программного обеспечения.

3 голосов
/ 14 апреля 2009

Microsoft пропускает намеки на версию Office с управляемым кодом со встроенным VSTO (предположительно так же, как интегрированная среда VB6 для VBA, поэтому VS IDE будет интегрирована для VSTO) с тех пор, как была создана .NET впервые выпущен.

Учитывая, насколько много кода задействовано - и учитывая, что это не приведет к появлению каких-либо функций, которые были бы видны пользователям - я очень сомневаюсь, что это занимает важное место в списке приоритетов Microsoft. Я могу себе представить, что они накладывают управляемый кодовый набор объектов поверх существующей кодовой базы (так же, как Джоэл Спольски размещал набор COM-объектов поверх существующей кодовой базы C, когда в первую очередь помещает VBA в Excel), и запускает новую IDE. в качестве по умолчанию, скрывая при этом старый. Даже это было бы серьезным упражнением (представьте, что вы пишете макро-рекордер!). Конечно, это сделало бы .NET предварительным требованием для Office, которое команда Office будет принимать только под дулом пистолета.

Конечно, они никогда не удалят VBA из продуктов - Excel по-прежнему поддерживает макросы Excel 4, а в Word по-прежнему имеется объект WordBasic Automation для поддержки макросов Word 6, и нет признаков того, что один из них был удален, поскольку слишком много устаревшего кода для поддержки - и никто не использовал ни одну из этих моделей кодирования в течение десятилетия.

Если Microsoft когда-либо поместит среду .NET в Office (что, честно говоря, я сомневаюсь, когда-нибудь произойдет), то они могут прекратить добавлять поддержку VBA для новых функций Office. Это самое близкое к прекращению VBA.

2 голосов
/ 30 декабря 2008

Надстройки VBA немного сложны в развертывании, но VSTO тем более. Кроме того, VSTO включает в себя немного накладных расходов, так как он должен запустить CLR перед запуском вашего кода.

Но самое главное; VSTO снимает боль написания VBA.

2 голосов
/ 23 сентября 2008

VBA далека от амортизации, фактически VBA должна быть введена в следующей версии Office на MAC (http://www.microsoft.com/presspass/press/2008/may08/05-13MacBU2008PR.mspx).

Для большинства людей на местах VBA и C XLL (и VB6 !!) продолжают оставаться инструментами выбора. Текущие связи .NET медленные и дают нулевой прирост производительности. Инструменты третьей части, такие как ExcelDNA, несколько облегчают боль, но очевидно, что неуправляемая основанная на C (и ассемблерная) основа кода Office не подходит для .NET.

2 голосов
/ 22 сентября 2008

Вот комментарий от Microsoft относительно будущей поддержки VBA. В двух словах, он не исчезает в версиях Office для Windows (но прекращается для версий Mac).

...