Ich weiß, dass es möglich ist, .NET-Code von Ihrem VBA-Code aus aufzurufen, aber warum gibt es VBA weiterhin? Der einzige Grund, an den ich denken kann, ist Vermächtnis.
Ich musste nur eine sortieren Scripting.Dictionary
und die Menge des benötigten Codes war erschreckend.
Die IDE sieht aus wie Visual Studio 2003. Und es gibt viele kleine Details, die Sie verrückt machen (wie das Ändern der Zeile und das Anzeigen einer Warnung aufgrund eines Kompilierungsfehlers). Oder, wenn Sie mehr als eine Tabelle öffnen, wird sie in Ihr "VBAProject" gemischt, und das ist wirklich verwirrend.
Die ganze Modul- / Klassenmodul- / Formularteilung ist eigentlich nicht so schlimm, aber ich habe jedes Mal die Aufgabe, Logik direkt in Formulare zu schreiben oder ein großes Modul zu haben, das sich um alles kümmert.
Warum kann ich nicht Alt + F11 drücken und in C # hacken?
Antworten:
Microsoft Office bietet mehrere Möglichkeiten, um das Standardverhalten programmgesteuert zu ändern bzw. zu verbessern. VBA ist eine kampferprobte, bewährte und weit verbreitete Sprache für In-Doc-Skripte. Viele Office-Mitarbeiter kennen VBA und verwenden es, während sie keine komplexeren Programmiersprachen wie C # kennen. Office würde nicht so viel kosten, wenn Kunden viele alte makrofähige Dokumente neu schreiben müssten, die geschäftskritische Dinge erledigen - nachdem sie eine neue Sprache gelernt haben oder was auch immer. Rückwärtskompatibilität ist ein Schlüsselmerkmal!
Ein vollständiger .NET-Stack für Office erfordert wahrscheinlich eine Reihe von Abhängigkeiten (dll: s usw.) und ist für einfache Aufgaben leicht zu handhaben - für leichtgewichtige Skripte kaum eine Alternative. VSTO bietet Ihnen die Möglichkeit, mit C # zu arbeiten, jedoch zum Preis eines umfangreicheren Entwicklungszyklus für Plugins.
Ein Programmmanager bei Microsoft hat dazu hier geschrieben . Es ist klar, dass es VBA für kleine Skriptzwecke gibt und noch geben wird.
quelle
Nun, die Antwort ist nicht nur "Vermächtnis". Die Antwort ist, dass VBA weder VB6 noch VB.Net ist: Es ist VBA. Eine eigene, aber verwandte Sprache. Wenn VBA durch VB.Net ersetzt würde, würden unweigerlich viele DOKUMENTE zerstört.
Das Ersetzen von VBA durch VB.Net würde mit ziemlicher Sicherheit zu Datenverlusten für eine erhebliche Anzahl von Benutzern ihrer Hauptprodukte führen - keine gute Sache.
Und ihr Zielmarkt für VBA sind keine Programmierer.
quelle
Wenn Sie den Hauptgrund für den Kauf von Office in der Beibehaltung der Kompatibilität mit allen vorhandenen Dokumenten sehen, von denen viele Makros und VBA enthalten, wäre es sehr mutig von Microsoft, diese Benutzer so zu behandeln, wie sie es der VB6-Menge angetan haben, und sie dazu aufzufordern Saug es auf und fang an, in .NET zu programmieren, schau dir einfach die Nr. 1 Uservoice-Anfrage an, die es je gab !
Ich kann mir vorstellen, dass die LibreOffice-Leute sich selbst bewusstlos machen würden!
VBA ist für die Produktivität in Office, nicht "Programmierung". Der Tag, an dem Sie mehr Leistung für Ihre Dokumente benötigen, ist der Tag, an dem Sie einen Programmierer einstellen, der alles neu schreibt. Ich vermute, ein weiterer Grund ist, warum Visual Studios-Makros auch nicht .NET sind. Betrachten Sie das devenv4-COM-Objekt als nicht viel anders als VBA.
quelle
Ich denke, es gibt einen kleinen, aber wichtigen Unterschied zwischen Erbe und Popularität . Und wenn du so viele Verträge abgeschlossen hast wie ich, erfährst du, dass VBA wahnsinnig beliebt ist :) Ich kann dir nicht sagen, wie viele Verträge ich für "Excel-Jockeys" abgeschlossen habe, die aber nichts über Programmierung wissen kann VBA zerstören, als wäre es eine Frage von Leben oder Tod.
quelle