Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

VSTO имеет новые возможности, но также имеет ряд серьезных недостатков по сравнению с VBA.

Во-первых, безопасность доступа к коду может затруднить развертывание приложений VSTO (это вежливость).

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

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

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

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

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

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

Microsoft намекала на версию Office с управляемым кодом и интегрированным VSTO (вероятно, так же, как VB6 IDE интегрируется с 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.

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

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

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

Развертывание надстроек VBA немного затруднительно, а вот VSTO — еще сложнее.Кроме того, VSTO требует некоторых накладных расходов, поскольку перед запуском кода необходимо запустить CLR.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top