Чому Microsoft все ще постачає VBA в рамках продуктів Office, а не інтегрувати .NET безпосередньо? [зачинено]


12

Я знаю, що ви можете зателефонувати .NET-код з вашого коду VBA, але чому VBA продовжує існувати? Єдина причина, про яку я можу подумати - це спадщина.

Я просто повинен був сортувати Scripting.Dictionaryі кількість потрібного коду лякає.

IDE виглядає як Visual Studio 2003. І є багато дрібних деталей, які змушують вас шаленими (як, наприклад, змінити лінію та отримати попередження через деяку помилку компіляції). Або якщо ви відкриєте більше однієї електронної таблиці, вона змішується з вами "VBAProject", і це дійсно заплутано.

Весь поділ на модуль / класний модуль / форму насправді не такий вже й поганий, але я щоразу закінчую безпосередньо записом логіки у форми або наявністю одного величезного модуля, який обробляє все.

Чому я не можу натиснути Alt + F11 і зламати C #?


11
"Єдина причина, про яку я можу подумати - це спадщина". І цього вам мало?
Ейфорія

3
Microsoft є королем застарілих програм та зворотної сумісності ... будь-яка інша відповідь була б для мене несподіваною, враховуючи, що це Microsoft.

2
@Kiril Це, швидше за все, не "ми завжди робили так"; це, мабуть, "ми порівняли, скільки ми можемо отримати від порушення зворотної сумісності та наскільки ми втратимо, і виявили, що цього не варто".
Doval

1
@Kiril - ви запитуєте про те, щоб відправити Office з .NET "замість" VBA. Це вимагало б її відмовитися.
JeffO

3
@Kiril: багато дуже хитрих персонажів також будуть дуже раді вставляти документи в документи, але не для вашої користі.
whatsisname

Відповіді:


15

Microsoft Office має декілька способів дозволити програму змінити / покращити поведінку за замовчуванням. VBA - випробувана в боях, перевірена і широко розповсюджена мова для написання сценаріїв між документами. Багато офісних людей знають VBA і користуються ним, тоді як вони не знають більш складних мов програмування, таких як C #. Офіс не продається стільки, якби клієнтам довелося переписати навантаження старих документів, що підтримують макрос, які роблять важливі речі для бізнесу - після того, як вони засвоїли нову мову чи що завгодно. Зворотна сумісність - ключова особливість!

Повний .NET стек для Office, ймовірно, вимагає певного набору управління залежностями (dll: s тощо), і він легко стає важким для управління простими завданнями - навряд чи це альтернатива для легкого сценарію. VSTO дає вам можливість працювати з C #, але ціною більш важкого циклу розробки плагінів.

Про це тут написав менеджер програм Microsoft . Зрозуміло, що VBA є і все ще буде існувати для невеликих сценаріїв.


Пояснення в статті дуже добре. Дякую.
Кирило

6
Як колишній співробітник можу додати, що деякі клієнти платять великі гроші, щоб Гейтс / Балмер / Наделла та ін були доступні як на швидкому наборі, так і на звичайних чатах, і VBA вважається достатньо критичним, що будь-які зміни, які порушують поведінку VBA (особливо в Excel і навіть між версіями) приверніть увагу ВИКЛЮЧНО швидко. Також це аж ніяк не лише для некваліфікованих; існує армія професійних розробників, які її використовують. C # досить часто шукається з VBA як робочі знання.
Джеймс Снелл

Цей аргумент не зупинив MS від застарілого VB6 років тому на користь VB.Net, який зламав багато коду.
Майк Лоурі

3

Що ж, відповідь не суворо "спадщина". Відповідь полягає в тому, що VBA не є ні VB6, ні VB.Net: це VBA. Окрема, але споріднена мова. Якщо замінити VBA на VB.Net, це неминуче зламає багато ДОКУМЕНТІВ.

Заміна VBA на VB.Net майже напевно призведе до втрати даних для значної кількості користувачів їхніх найвищих продуктів - не дуже добре.

І їх цільовий ринок для VBA - це не програмісти.


7
VBA - дуже близький родич VB6. Єдині суттєві відмінності - це ті, що стосуються API; тобто VBForms замість об'єктних моделей Excel або Word. Якщо ці відмінності відсутні, ви можете скопіювати / вставити код VBA в VB6 (або навпаки), і він все одно буде працювати 99 відсотків часу.
Роберт Харві

3
Підтримка VBA та VB.Net/C# не повинні бути взаємовиключними.
Joel Coehoorn

2

Якщо ви вважаєте основною причиною того, що люди купують Office, - це зберігати сумісність з усіма існуючими документами, у багатьох з яких є макроси та VBA, було б дуже сміливим Microsoft поставитися до тих користувачів, як вони робили натовп VB6, і сказати їм відсмоктуйте його і починайте кодувати в .NET, просто подивіться на запит №1 користувача коли-небудь !

Я думаю, хлопці LibreOffice підбадьорювали б себе до безвідомості!

VBA - це продуктивність в Office, а не "програмування". День, коли вам потрібно більше енергії для своїх документів, - це день, коли ви наймаєте програміста, щоб переписати все. Думаю, ще одна причина, чому макроси Visual Studios теж не є .NET - подумайте про об’єкт devenv4 COM як про не сильно відмінний від VBA.


Він не просить їх скинути VBA. Він просить їх мати .Net як додатковий варіант.
Joel Coehoorn

1

Я думаю, що між спадщиною та популярністю є незначна, але важлива різниця . І коли ви уклали стільки контрактів, скільки у мене, ви дізнаєтесь, що VBA шалено популярний :) Я не можу сказати, скільки контрактів я зробив для "жокеїв Excel", які нічого не знають про програмування, але може розчавити VBA так, як це питання життя чи смерті.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.