2009-12-21 12 views
6

Quali sono le differenze nella programmazione di Excel tra un componente aggiuntivo UDF, macro, componente aggiuntivo, automazione, XLL o VSTO.
Quale dovrei usare e in quali circostanze?Metodologie di programmazione Excel

risposta

4

Utilizzare VBA per Excel 2003 e versioni precedenti (sebbene si possa ancora utilizzarlo nel 2007 se lo si desidera).

VSTO è per Excel 2003 o 2007.

Il vecchio macro di Excel 4.0 lingua non deve assolutamente essere usato più, mantengono parti invalidanti e la funzionalità sta scomparendo. Stiamo riscrivendo tutti i nostri fogli di calcolo per estrarre i vecchi macro.

I macro sono anche un altro nome per il codice VBA.

Un componente aggiuntivo è solo un'altra cartella di lavoro di Excel con codice (come VBA), in modo da poter utilizzare il codice in diversi libri e mantenere il codice direttamente fuori dal libro degli utenti.

Un UDF è solo una funzione scritta in VBA che viene chiamata come una funzione del foglio di lavoro in una cella in un foglio di calcolo (può anche essere memorizzata in un componente aggiuntivo).

+2

Tre piccoli appunti, poiché l'OP ci sta chiedendo di confrontare le mele con i cesti: (1) la parola "macro" è spesso usata per descrivere il codice VBA, non solo il vecchio linguaggio macro di Excel 4.0. È raro vedere qualsiasi codice di Excel 4.0 "in the wild". (2) Anche i componenti aggiuntivi vengono scritti in VBA. (3) Le UDF possono essere memorizzate in componenti aggiuntivi e nel foglio di calcolo chiamandoli. – richardtallent

+0

Grazie, ho modificato tutto ciò. –

+0

Come è VSTO per Excel 2007? Ho fatto un sacco di progetti con VSTO su Excel 2003. – Mathias

1

Lance ha una buona definizione delle tue domande. In termini di cosa usare quando, VBA vs VSTO - se hai bisogno di usare .net framework vai con VSTO. Per esempio, volevo creare un'interfaccia del programma VB.net con un foglio di calcolo che apprendesse che VSTO sarebbe la strada da percorrere (che e vba non ha un array.sort come vb.net che mi fa impazzire). Tuttavia, se stai creando un foglio di calcolo elegante che farà cose interessanti per i tuoi utenti finali (formule, grafici, ecc.), Fai semplicemente un po 'di codice VBA all'interno del foglio di calcolo. Dipende tutto da cosa devi fare. Il miglior strumento per il lavoro.

8

Cercherò di gruppo/opporsi alcuni degli elementi di cui parli:

VSTO vs. VBA:
VBA (Visual Basic for Applications) è il modo "classico" di scrivere di office automation. Excel ha un'interfaccia di sviluppo che puoi sparare dall'ufficio per scrivere macro e UDF e che non è cambiata da circa 10 anni. Tra l'altro, la distribuzione è banale e VBA offre funzionalità come la registrazione macro, che registrano le tue azioni in codice e forniscono un buon modo per capire il modello dell'oggetto.
VSTO è arrivato più di recente e consente di automatizzare l'ufficio utilizzando .NET (utilizza COM). È possibile sfruttare tutti .NET e Visual Studio (es: aggiungere moduli WPF), che offre una grande flessibilità, ma la distribuzione è più complessa.
UDF contro Macro e componente aggiuntivo
Le funzioni definite dall'utente sono metodi personalizzati che rimarranno collegati alla cartella di lavoro; una volta aggiunto guadagno lo stesso status delle funzioni di Excel incorporate: puoi chiamarle da fogli di lavoro come = MyFunction()
Le macro sono procedure che rimarranno attaccate alla tua cartella di lavoro. Possono essere chiamati direttamente dall'utente o collegati ad eventi (es: quando viene selezionato un foglio di lavoro, fai questo).
I componenti aggiuntivi non sono allegati a un documento specifico, ma all'applicazione stessa. In genere una macro o UDF è allegata alla cartella di lavoro: quando apri il documento, il codice diventa disponibile per te e, quando fornisci il documento, viene copiato anche il codice. Al contrario, i componenti aggiuntivi sono allegati all'applicazione: nel momento in cui si avvia Excel, il componente aggiuntivo diventa disponibile. Strumenti come il Risolutore sono un componente aggiuntivo. Nota che i componenti aggiuntivi possono essere scritti sia in VBA che in VSTO (puoi anche scrivere UDF in .NET, ma è atipico).
Quando utilizzare cosa
Componente aggiuntivo vs Macro/UDF: scrivere un componente aggiuntivo se la propria funzionalità deve essere accessibile da qualsiasi cartella di lavoro.
VSTO o no VSTO: si tratta di un dibattito. La maggior parte delle persone che hanno familiarità con l'automazione VBA "classica" non gradiscono troppo il VSTO, perché la curva di apprendimento è un po 'ripida. Se sei abituato a lavorare con .Net, questo non dovrebbe essere un problema, ma VSTO è un po 'bizzarro rispetto allo sviluppo di app .Net "normale".
Si noti inoltre che se si utilizza VSTO, il codice non può essere modificato dall'utente. Ciò è probabilmente desiderabile, ma allo stesso tempo gli utenti esperti di Excel sanno come utilizzare VBA e macro e si aspettano di essere in grado di modificare il codice. Ciò può portare a discussioni interessanti.
Personalmente, di solito uso VSTO per i componenti aggiuntivi, e lo uso non appena vedo che molti codici logici/procedurali entrano in macro in VBA. Ciò che VSTO mi offre è la possibilità di scrivere codice testabile, in Visual Studio, e anche codice ad alte prestazioni quando sono coinvolti calcoli pesanti. L'altro motivo per utilizzare VSTO è di sfruttare WPF per personalizzare l'ufficio.

+0

Puoi dare un link esattamente come è WPF. Ho cercato di capirlo, ma non capisco. A cosa serve? Qual è la differenza tra questa e una domanda di modulo? – Jon49

+0

Lo scopo di WPF è simile a Winforms: ti offre un modo per creare moduli per l'utente. I vantaggi del WPF rispetto alle forme sono (tra gli altri) che è molto più flessibile e che funzionalità e design sono separati. Ad esempio, puoi comporre i controlli in qualsiasi modo desideri creare i tuoi controlli, il che dà molta libertà su ciò che puoi fare con l'interfaccia utente - e una volta che l'interfaccia utente funziona, un designer può farlo sembrare carino. – Mathias

1

A qualche punto in più dal lato VBA delle cose:

Add-in - tutto il codice non banale dovrebbero andare in un componente aggiuntivo. Un tipico progetto per me consiste in un componente aggiuntivo che contiene tutto il codice, un archivio dati (database, file di testo, cartella di lavoro Excel) per contenere i dati e uno o più modelli come livello di presentazione o interfaccia utente. Non è necessario utilizzare un componente aggiuntivo; il codice funzionerà perfettamente nei moduli all'interno dei modelli. Tuttavia, è buona norma mantenere separati i livelli del progetto. Il codice viene inserito in un componente aggiuntivo, i dati vengono inseriti in un archivio dati, i pezzi di presentazione vengono inseriti in una cartella di lavoro o in una cartella di lavoro. In questo modo, puoi cambiare il tuo codice senza influenzare gli altri due livelli. Oppure puoi cambiare un modello di presentazione senza influire sui dati esistenti.

UDF - Viene dichiarato con la parola chiave Funzione. Utilizzare una funzione se è necessario restituire un singolo valore (o istanza di array o oggetto, ecc.). Le funzioni del foglio di lavoro personalizzate sono le UDF perché restituiscono un valore solo a una cella. Non cambiano alcuna proprietà della cella tranne la proprietà Value. Non è possibile applicare bordi o caratteri, ad esempio, tramite una funzione.

Macro - Chiamata anche una procedura, viene dichiarata con la parola chiave Sub. Utilizzare una procedura se è necessario fare qualcosa di diverso da restituire un valore, ad esempio se è necessario modificare parti del modello a oggetti di Excel.

Problemi correlati