Perché Microsoft spedisce ancora VBA all'interno dei prodotti Office, invece di integrare direttamente .NET? [chiuso]

12

So che è possibile chiamare codice .NET dal codice VBA, ma perché VBA continua a esistere? L'unica ragione per cui posso pensare è l'eredità.

Ho dovuto solo ordinare un Scripting.Dictionary e la quantità di codice necessaria era spaventosa.

L'IDE si presenta come Visual Studio 2003. E ci sono molti piccoli dettagli che ti fanno impazzire (come cambiare la linea e ricevere un avviso a causa di alcuni errori di compilazione). Oppure, se apri più di un foglio di calcolo, si mescola con te "VBAProject" e questo è davvero confuso.

L'intero modulo / classmodule / form division non è poi così male, ma finisco sempre con la scrittura diretta della logica nei moduli o con un enorme modulo che gestisce tutto.

Perché non posso premere Alt + F11 e modificare C #?

    
posta Kiril 04.08.2014 - 16:39
fonte

4 risposte

15

Microsoft Office ha diversi modi per consentire di modificare / migliorare il comportamento predefinito a livello di codice. VBA è un linguaggio collaudato, collaudato e ampiamente diffuso per lo scripting in-doc. Un sacco di persone dell'ufficio conoscono VBA e lo usano, mentre non conoscono linguaggi di programmazione più complessi come C #. L'ufficio non sarebbe venduto tanto se i clienti dovessero riscrivere un sacco di vecchi documenti abilitati alla macro che fanno cose critiche per l'azienda, dopo aver appreso una nuova lingua o altro. La compabilità all'indietro è una caratteristica fondamentale!

Uno stack .NET completo per Office richiede probabilmente un set di gestione delle dipendenze (dll: s, ecc.) e sarà facile da gestire in modo semplice per attività semplici: non è certo un'alternativa per lo scripting leggero. VSTO ti dà la possibilità di andare con C #, ma al prezzo di un ciclo di sviluppo di plugin più pesante.

Un program manager di Microsoft ha scritto su questo qui . È chiaro che VBA è e sarà ancora disponibile per piccoli scopi di scripting.

    
risposta data 04.08.2014 - 17:02
fonte
3

Bene, la risposta non è strettamente "legacy". La risposta è che VBA non è né VB6 né VB.Net: è VBA. Un linguaggio separato ma correlato. Se si sostituisce VBA con VB.Net, inevitabilmente si rompono molti DOCUMENTI.

Sostituire VBA con VB.Net porterebbe quasi sicuramente alla perdita di dati per un numero significativo di utenti dei loro prodotti principali - non è una buona cosa.

E il loro mercato di riferimento per VBA non è programmatore.

    
risposta data 04.08.2014 - 17:02
fonte
2

Se consideri che la ragione principale per cui la gente compra Office è mantenere la compatibilità con tutti i documenti esistenti, molti dei quali contengono macro e VBA, sarebbe una coraggiosa Microsoft per trattare quegli utenti come hanno fatto il pubblico VB6 e di 'loro di succhiarlo e di iniziare la codifica in .NET, basta dare un'occhiata a n. 1 richiesta di servizio sempre !

Immagino che i ragazzi di LibreOffice si rallegrino nell'incoscienza!

VBA è per produttività in Office, non "programmazione". Il giorno in cui hai bisogno di più energia dai tuoi documenti è il giorno in cui assumi un programmatore per riscrivere tutto. Suppongo che un altro motivo sia il motivo per cui le macro di Visual Studio non sono .NET - pensate che l'oggetto COM devenv4 non sia molto diverso da VBA.

    
risposta data 04.08.2014 - 22:33
fonte
1

Penso che esista una leggera, ma importante, differenza tra legacy e popolarità . E quando hai fatto tanti contratti quanti ne ho, ti rendi conto che VBA è follemente popolare :) Non posso dirti quanti contratti ho fatto per "Excel fantino" che non fanno So qualcosa sulla programmazione, ma posso schiacciare VBA come se fosse una questione di vita o di morte.

    
risposta data 05.08.2014 - 17:55
fonte

Leggi altre domande sui tag