Wiem, że można wywołać kod .NET z kodu VBA, ale dlaczego VBA nadal istnieje? Jedynym powodem, dla którego mogę pomyśleć, jest dziedzictwo.
Musiałem tylko posortować Scripting.Dictionary
i potrzebna ilość kodu była przerażająca.
IDE wygląda jak Visual Studio 2003. I jest wiele drobiazgów, które doprowadzają cię do szaleństwa (jak zmiana linii i ostrzeżenie z powodu błędu kompilacji). Lub, jeśli otworzysz więcej niż jeden arkusz kalkulacyjny, wmiesza się on w ciebie „VBAProject” i to jest naprawdę mylące.
Cały podział modułu / modułu / klasy nie jest tak naprawdę zły, ale kończę za każdym razem z bezpośrednim pisaniem logiki w formularzach lub posiadaniem jednego dużego modułu, który obsługuje wszystko.
Dlaczego nie mogę nacisnąć Alt + F11 i włamać się w C #?
Odpowiedzi:
Microsoft Office ma wiele sposobów na programową zmianę / poprawę domyślnego zachowania. VBA to sprawdzony w boju, sprawdzony i szeroko rozpowszechniony język skryptów w formacie doc. Wielu pracowników biurowych zna VBA i używa go, podczas gdy nie znają bardziej złożonych języków programowania, takich jak C #. Pakiet Office nie zostałby sprzedany tak często, gdyby klienci musieli przepisać mnóstwo starych dokumentów obsługujących makra, które mają kluczowe znaczenie dla biznesu - po tym, jak nauczyli się nowego języka lub cokolwiek innego. Kompatybilność wsteczna jest kluczową funkcją!
Pełny stos .NET dla pakietu Office prawdopodobnie wymaga pewnego zestawu zarządzania zależnościami (dll: s itp.) I łatwo będzie go obsługiwać w przypadku prostych zadań - nie jest to alternatywa dla lekkich skryptów. VSTO daje możliwość korzystania z C #, ale za cenę cięższego cyklu rozwoju wtyczek.
Menedżer programu w Microsoft napisał o tym tutaj . Oczywiste jest, że VBA jest i nadal będzie dostępny dla małych celów skryptowych.
źródło
Cóż, odpowiedź nie jest ściśle „spuścizną”. Odpowiedź jest taka, że VBA nie jest ani VB6, ani VB.Net: jest to VBA. Oddzielny, ale powiązany język. Jeśli zastąpi VBA VB.Net, nieuchronnie złamie wiele DOKUMENTÓW.
Zastąpienie VBA VB.Net prawie na pewno spowodowałoby utratę danych przez znaczną liczbę użytkowników ich najlepszych produktów - nie jest to dobra rzecz.
A ich docelowym rynkiem dla VBA nie są programiści.
źródło
Jeśli weźmiesz pod uwagę główny powód, dla którego ludzie kupują pakiet Office, to utrzymanie zgodności ze wszystkimi istniejącymi dokumentami, z których wiele zawiera makra i VBA, byłoby bardzo odważnym Microsoftem traktować tych użytkowników tak, jak robili to tłum VB6 i powiedzieć im, aby wciągnij go i zacznij kodować w .NET, po prostu spójrz na pierwsze żądanie faktury użytkownika !
Wyobrażam sobie, że faceci LibreOffice pogrążyliby się w nieświadomości!
VBA służy do zwiększania wydajności w pakiecie Office, a nie do „programowania”. Dzień, w którym potrzebujesz więcej mocy z dokumentów, to dzień, w którym zatrudnisz programistę, aby przepisał wszystko. Myślę, że innym powodem jest to, że makra Visual Studios nie są również .NET - pomyśl o obiekcie COM devenv4 jako niewiele różniącym się od VBA.
źródło
Myślę, że istnieje niewielka, ale ważna różnica między dziedzictwem a popularnością . A kiedy wykonałeś tyle kontraktów, co ja, dowiadujesz się, że VBA jest niesamowicie popularny :) Nie mogę powiedzieć, ile kontraktów zrobiłem dla „dżokejów Excela”, którzy nie wiedzą nic o programowaniu, ale może zmiażdżyć VBA, jakby to była kwestia życia lub śmierci.
źródło