Domanda

VBA scomparirà presto, come ha fatto VB6? Non dovrei sviluppare nuove applicazioni di Office con VBA? O dovrei sviluppare tutte le nuove app di Office con VSTO?

Aggiornamento: recentemente letto questo articolo .

È stato utile?

Soluzione

Office VSTO offre molte funzionalità aggiuntive rispetto a Office VBA, e anche se non credo che Microsoft abbia segnalato che terminerà VBA (in effetti, hanno detto esplicitamente che rimarrà in circolazione almeno fino a Office 14; Office 2007 = Office 12), penso che valga la pena di spostare le tue applicazioni su VSTO per sfruttare la flessibilità e la potenza aggiuntive.

In realtà non penso che deprecare VBA sarebbe fattibile, dal momento che una buona parte della programmazione di Office ha luogo a livello macro da parte degli utenti aziendali e non credo che sparirà presto. Queste persone generalmente non hanno accesso a un IDE compatibile con VSTO.

Altri suggerimenti

VSTO ha nuove funzionalità, ma presenta anche una serie di gravi carenze rispetto a VBA.

Per prima cosa, Code Access Security può rendere difficile la distribuzione di applicazioni VSTO (che è educato).

Per un altro, l'ambiente di sviluppo VSTO non è per nulla accessibile come "Power User" sviluppatori come VBA. Ad esempio, nessun registratore di macro per iniziare.

E un grande spettacolo è che l'interoperabilità di .NET con oggetti COM fuori processo non funziona bene. Ad esempio, se si desidera manipolare altre applicazioni di Office (Word, PowerPoint, Outlook) all'interno di un'applicazione VSTO di Excel, si troveranno più copie di queste applicazioni in esecuzione in background, per i motivi descritti in questo articolo KB .

Tutto ciò, unito all'enorme investimento nelle app VBA esistenti, significa che VBA non andrà via presto.

Microsoft ha dichiarato che VBA essere supportato andando avanti per il prossimo futuro, ma stanno anche raccomandando che le nuove app utilizzino VSTO.

L'ultima versione Mac di MS Office non supporta VBA e Windows a 64 bit lo esegue in modalità out-of-process virtuale a 32 bit. Quindi, se stai pianificando una nuova applicazione che utilizza Office come piattaforma, VSTO è sicuramente la strada da percorrere, ma non dovresti preoccuparti troppo del supporto legacy.

Come sottolinea @cori, sarebbe un grande no-no per il marketing che MS si limitasse a strappare supporto e rompere così tanto software esistente.

Microsoft ha lasciato cadere suggerimenti su una versione di Office del codice gestito con un VSTO integrato (presumibilmente allo stesso modo in cui l'IDE VB6 è integrato per VBA, quindi l'IDE VS sarebbe stato integrato per VSTO) sin da quando .NET era rilasciato per la prima volta.

Dato quanto è coinvolta la codifica - e dato che questo non produrrebbe alcuna caratteristica che sarebbe visibile agli utenti - dubito fortemente che questo sia in cima alla lista delle priorità di Microsoft. Posso immaginare che sovrapponano un set di codici gestiti di oggetti sopra la base di codice esistente (proprio come Joel Spolsky ha sovrapposto un set di oggetti COM sopra la base di codice C esistente quando ha messo VBA in Excel in primo luogo) e ha creato un nuovo IDE come predefinito, nascondendo quello vecchio. Anche quello sarebbe un esercizio importante (immagina di scrivere il registratore di macro!). Naturalmente, ciò renderebbe .NET un pre-req per Office, che il team di Office accetterà solo sotto minaccia.

Ovviamente non rimuoveranno mai realmente VBA dai prodotti: Excel supporta ancora le macro di Excel 4 e Word ha ancora l'oggetto WordBasic Automation per supportare le macro di Word 6 e non c'è alcun segno di rimozione di nessuno di questi, poiché lì è troppo codice legacy da supportare - e nessuno ha usato nessuno di questi modelli di codifica in un decennio.

Se Microsoft mettesse mai un ambiente .NET in Office (che, francamente, dubito che accadrà mai), potrebbero smettere di aggiungere il supporto VBA per le nuove funzionalità di Office. Questo è il più vicino che riusciranno a interrompere la VBA.

Ecco un di Microsoft per quanto riguarda il futuro supporto VBA. In poche parole, non scomparirà nelle versioni Windows di Office (ma verrà interrotto per le versioni Mac).

VBA è ben lungi dall'essere deprezzato, infatti VBA deve essere reintrodotto nella prossima versione di Office sul MAC ( http://www.microsoft.com/presspass/press/2008/may08/05-13MacBU2008PR.mspx ).

Per la maggior parte delle persone a terra, VBA e C XLL (e VB6 !!) continuano a essere gli strumenti preferiti. Gli attuali collegamenti .NET sono lenti e offrono un aumento della produttività pari a zero. Strumenti di terze parti come ExcelDNA alleviano un po 'il dolore, ma ovviamente la base di codice non gestita basata su C (e basata su assemblatore) di Office non si adatta facilmente a .NET.

I componenti aggiuntivi VBA sono un po 'problematici da distribuire, ma VSTO lo è ancora di più. Inoltre, VSTO comporta un certo sovraccarico, poiché deve avviare il CLR prima di eseguire il codice.

Ma la cosa più importante di tutte; VSTO toglie il dolore di scrivere VBA.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top