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


12

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

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

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

L'intera divisione modulo / modulo di classe / modulo non è poi così male, ma finisco sempre per scrivere direttamente la logica nei moduli o avere un enorme modulo che gestisce tutto.

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


11
"L'unica ragione a cui posso pensare è l'eredità." E questo non ti basta?
Euforico

3
Microsoft è il re delle applicazioni legacy e della retrocompatibilità ... qualsiasi altra risposta sarebbe sorprendente per me dato che si tratta di Microsoft di cui stiamo parlando.

2
@Kiril Probabilmente non "l'abbiamo sempre fatto in quel modo"; è probabilmente "abbiamo confrontato quanto possiamo guadagnare dalla rottura della compatibilità all'indietro con quanto perderemo, e abbiamo scoperto che non ne vale la pena".
Doval,

1
@Kiril - la tua domanda chiede di spedire Office con .NET "anziché" di VBA. Ciò richiederebbe l'abbandono.
JeffO

3
@Kiril: molti personaggi molto ingannevoli sarebbero anche molto felici di incorporare DLL nei documenti, ma non a tuo vantaggio.
whatsisname

Risposte:


15

Microsoft Office offre diversi modi per consentire di modificare / migliorare il comportamento predefinito a livello di codice. VBA è un linguaggio testato in battaglia, collaudato e ampiamente diffuso per gli script in-doc. Molte persone in ufficio conoscono VBA e lo usano, mentre non conoscono linguaggi di programmazione più complessi come C #. Office non verrebbe venduto tanto se i clienti dovessero riscrivere un sacco di vecchi documenti abilitati per le macro che svolgono attività critiche per l'azienda, dopo aver appreso una nuova lingua o altro. La compatibilità all'indietro è una caratteristica fondamentale!

Uno stack .NET completo per Office probabilmente richiede un set di gestione delle dipendenze (dll: s, ecc.) E diventerà facilmente pesante da gestire per attività semplici - non è certo un'alternativa per gli script leggeri. VSTO ti dà la possibilità di utilizzare C #, ma al prezzo di un ciclo di sviluppo di plugin più pesante.

Un responsabile di programma di Microsoft ha scritto su questo qui . È chiaro che VBA è e sarà ancora in giro per piccoli scopi di scripting.


La spiegazione nell'articolo è molto buona. Grazie.
Kiril,

6
Come ex-staff posso aggiungere che alcuni clienti pagano un sacco di soldi per avere Gates / Ballmer / Nadella ecc. Disponibili su Speed-dial e le chat regolari e che VBA è considerato abbastanza critico da qualsiasi modifica che rompa il comportamento VBA (specialmente in Excel e anche tra le versioni) ottenere attenzione ECCEZIONALMENTE rapidamente. Inoltre non è affatto solo per i non specializzati; c'è un esercito di sviluppatori professionisti che lo usano. C # è abbastanza comunemente cercato con VBA come conoscenza operativa.
James Snell,

Questo argomento non ha impedito a MS di obsoleto VB6 anni fa a favore di VB.Net, che ha violato un sacco di codice.
Mike Lowery,

3

Bene, la risposta non è strettamente "eredità". La risposta è che VBA non è né VB6 né VB.Net: è VBA. Un linguaggio separato, ma correlato. Se sostituito VBA con VB.Net, inevitabilmente romperebbe 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 sono i programmatori.


7
VBA è un cugino molto vicino di VB6. Le uniche differenze sostanziali sono quelle relative all'API; cioè VBForms anziché i modelli di oggetti Excel o Word. In assenza di tali differenze, è possibile copiare / incollare il codice VBA in VB6 (o viceversa) e continuerà a funzionare il 99 percento delle volte.
Robert Harvey,

3
Il supporto per VBA e VB.Net/C# non deve escludersi a vicenda.
Joel Coehoorn,

2

Se consideri il motivo principale per cui le persone acquistano Office è mantenere la compatibilità con tutti i documenti esistenti, molti dei quali contengono macro e VBA, sarebbe una Microsoft molto coraggiosa trattare quegli utenti come se avessero fatto la folla VB6 e dire loro di succhialo e inizia a scrivere codice in .NET, dai un'occhiata alla richiesta di n. 1 in assoluto !

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

VBA è per la produttività in Office, non per "programmare". 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 Studios non sono neanche .NET. Pensa all'oggetto COM devenv4 come non molto diverso da VBA.


Non sta chiedendo loro di abbandonare VBA. Sta chiedendo loro di avere .Net come opzione aggiuntiva.
Joel Coehoorn,

1

Penso che ci sia una leggera, ma importante, differenza tra eredità e popolarità . E quando hai fatto tutti i contratti che ho, scopri che VBA è follemente popolare :) Non posso dirti quanti contratti ho fatto per "fantini di Excel" che non sanno nulla di programmazione ma può schiacciare VBA come se fosse una questione di vita o di morte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.