Я знаю, что можно вызывать код .NET из вашего кода VBA, но почему VBA продолжает существовать? Единственная причина, по которой я могу думать, это наследие.
Я просто должен был отсортировать, Scripting.Dictionary
и объем необходимого кода был пугающим.
Среда выглядит как Visual Studio 2003. И есть много мелких деталей, которые сводят вас с ума (например, изменение строки и предупреждение из-за какой-то ошибки компиляции). Или, если вы открываете более одной электронной таблицы, она смешивается с вами «VBAProject», и это действительно сбивает с толку.
Целое разделение модуля / класса-модуля / формы на самом деле не так уж и плохо, но каждый раз я заканчиваю тем, что напрямую пишу логику в формах, или с одним огромным модулем, который обрабатывает все.
Почему я не могу нажать Alt + F11 и взломать в C #?
Ответы:
В Microsoft Office есть несколько способов, позволяющих программно изменять / улучшать поведение по умолчанию. VBA - это проверенный, проверенный и широко распространенный язык для сценариев in-doc. Многие офисные люди знают VBA и используют его, хотя они не знают более сложных языков программирования, таких как C #. Office не будет продаваться так много, если клиентам придется переписывать множество старых документов с поддержкой макросов, которые решают важные для бизнеса задачи - после того, как они выучат новый язык или что-то еще. Обратная совместимость является ключевой особенностью!
Полный стек .NET для Office, вероятно, требует некоторого набора управления зависимостями (dll: s и т. Д.), И его легко справиться с простыми задачами - вряд ли это альтернатива легким сценариям. VSTO дает вам возможность работать с C #, но за счет более тяжелого цикла разработки плагинов.
Менеджер программы в Microsoft написал об этом здесь . Понятно, что VBA есть и будет для небольших сценариев.
источник
Ну, ответ не является строго «наследием». Ответ заключается в том, что VBA не является ни VB6, ни VB.Net: это VBA. Отдельный, но родственный язык. Если заменить VBA на VB.Net, это неизбежно нарушит множество ДОКУМЕНТОВ.
Замена VBA на VB.Net почти наверняка приведет к потере данных для значительного числа пользователей их основных продуктов - не очень хорошая вещь.
И их целевой рынок для VBA - не программисты.
источник
Если вы считаете, что основная причина, по которой люди покупают Office, заключается в том, чтобы поддерживать совместимость со всеми существующими документами, многие из которых содержат макросы и VBA, было бы очень смело обращаться с этими пользователями, как с толпой VB6, и говорить им: Смиритесь с этим и начните писать код в .NET, просто посмотрите на запрос # 1 uservoice !
Я полагаю, что ребята из LibreOffice впали бы в бессознательное состояние!
VBA для производительности в Office, а не "программирования". День, когда вам нужно больше энергии для ваших документов, - это день, когда вы нанимаете программиста, чтобы все переписать. Я предполагаю, что другая причина в том, что макросы Visual Studios также не являются .NET - представьте, что COM-объект devenv4 не сильно отличается от VBA.
источник
Я думаю, что есть небольшая, но важная разница между наследием и популярностью . И когда вы заключили столько контрактов, сколько у меня, вы узнаете, что VBA безумно популярен :) Я не могу сказать вам, сколько контрактов я заключил для "жокеев Excel", которые ничего не знают о программировании, но может сокрушить VBA, как будто это вопрос жизни или смерти.
источник