Creare una funzione per MS Excel in C#

Anonimo
2014-12-04T10:05:57+00:00

Salve a tutti, 

avrei una domanda probabilmente basica, ma che ho bisogno di sapere per cominciare a chiarire le idee. 

Vorrei creare una funzione custom in Excel; semplice, se si aggiunge una macro con codice

Public Function MyFunction(ByVal whatever As Variant) As Variant

End Function

Tuttavia, ciò che io vorrei è piuttosto permettere all'utente, partendo da qualsiasi file Excel sul suo computer, di poter utilizzare la mia funzione. Questo mi sembra qualcosa del tipo "creare una libreria Excel", o un semplice Add-In da installare sul computer... da allora, su qualunque istanza Excel l'add-in sarà disponibile e, una volta selezionato, la funzione si aggiungerà al dizionario standard di Microsoft.

La mia idea sarebbe scrivere l'intero codice in C#, quindi fare la release dell'eseguibile di installazione e farlo eseguire sulle macchine dei colleghi per permettere loro, dopo questa installazione, di avere a disposizione la mia funzione su Excel.

Purtroppo tra il dire e il fare c'è di mezzo il mare: ho cercato a lungo ma non ho ancora le idee chiare su quale documentazione dovrei seguire per raggiungere questo scopo. Come si chiama ciò che voglio fare, e a quali docs potrei riferirmi per farlo?

Grazie in anticipo,

Matteo

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2014-12-05T07:46:02+00:00

Riguardo al mio essere off-topic, intendi dire che ho scelto la tag sbagliata o che sto parlando di cose che non hanno senso da un punto di vista tecnico?

OT perché C# NON fa parte di Office.

Idee confuse...

Se il tuo problema è la sicurezza e non vuoi che il codice sia visto, se hai una copia di VisualBasic 6.0 (il tool di programmazione), puoi creare una ActiveXDLL che ti mette al sicuro da sguardi indiscreti. La dll va poi registrata sulle macchine che la utilizzano.

C#.

Anche con C# puoi creare una DLL che poi viene utilizzata dal vb di Excel. Vedi la mia risposta qui (si parla di vb.net ma il succo è quello):

Con VisualStudio 2nnn puoi creare interi progetti Excel senza far ricorso al vba. Ma, ripeto, siamo molto OT in questo forum. Però il contesto deve essere omogeneo come versioni di Excel, altrimenti si rischia di entrare in complicazioni non indifferenti. Esistono poi librerie .net di terze parti che consentono di lavorare i file di Excel *tipo vba*. Anche questo argomento è OT.

Se poi vogliamo esagerare... ;-), dalla versione 2013 di Excel c'è la possibilità di utilizzare app incorporate in Excel. Vedi:

Sempre molto OT. Per favore, chiedi qui selezionando il Forum di C# (o del linguaggio che preferisci) sulla sinistra:

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-12-04T16:28:40+00:00

    Ciao Norman,

    grazie per l'articolo, è indubbiamente interessante nonché la soluzione a cui avevo pensato io in un primo momento. Tuttavia, ti copio-incollo la risposta data a Mauro che illustra i motivi per cui preferirei optare per un compilato (C#) anziché lasciare il codice in VBA (che richiede una costante compilazione in back-ground, quindi bisogna distribuire il codice sorgente): 

    Il motivo per cui vorrei usare C# è principalmente la distribuzione: la classica distribuzione di funzioni/progetti VBA come add-in di Excel permette sempre di accedere al codice (anche se protetto da password, non occorre essere un grande hacker per rimuoverla). Al contrario, l'idea mia (generica, ovviamente) sarebbe quella di compilare il codice e quindi distribuire l'add-in con la release: l'utente installa tramite il setup.exe ed è fatta.

    Inoltre, un secondo motivo per cui vorrei usare C# è la libreria grafica: l'add-in non consiste solo nella funzione/le funzioni ma anche in alcune finestre di dialogo che saprei sviluppare senza problemi in C# e con molte più difficoltà in VBA (la cui User Form library è comunque abbastanza scarna, anche dopo aver installato le componenti aggiuntive).

    Riguardo al mio essere off-topic, intendi dire che ho scelto la tag sbagliata o che sto parlando di cose che non hanno senso da un punto di vista tecnico?

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-12-04T16:26:24+00:00

    Il motivo per cui vorrei usare C# è principalmente la distribuzione: la classica distribuzione di funzioni/progetti VBA come add-in di Excel permette sempre di accedere al codice (anche se protetto da password, non occorre essere un grande hacker per rimuoverla). Al contrario, l'idea mia (generica, ovviamente) sarebbe quella di compilare il codice e quindi distribuire l'add-in con la release: l'utente installa tramite il setup.exe ed è fatta. 

    Inoltre, un secondo motivo per cui vorrei usare C# è la libreria grafica: l'add-in non consiste solo nella funzione/le funzioni ma anche in alcune finestre di dialogo che saprei sviluppare senza problemi in C# e con molte più difficoltà in VBA (la cui User Form library è comunque abbastanza scarna, anche dopo aver installato le componenti aggiuntive). 

    Riguardo al mio essere off-topic, intendi dire che ho scelto la tag sbagliata o che sto parlando di cose che non hanno senso da un punto di vista tecnico?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-12-04T14:11:52+00:00

    La mia idea sarebbe scrivere l'intero codice in C#, quindi fare la release dell'eseguibile di installazione e farlo eseguire sulle macchine dei colleghi per permettere loro, dopo questa installazione, di avere a disposizione la mia funzione su Excel.

    Per C# sei molto OT (Off Topic, non in argomento).

    Inoltre, non ho capito perché vuoi utilizzare C# per fare una cosa che normalmente si fa in vb.

    Puoi spiegare meglio?

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-12-04T14:00:57+00:00

    Ciao Matteo,

    Vorrei creare una funzione custom in Excel; semplice, se si aggiunge una macro con codice

    Public Function MyFunction(ByVal whatever As Variant) As Variant

    End Function

    Tuttavia, ciò che io vorrei è piuttosto permettere all'utente, partendo da qualsiasi file Excel sul suo computer, di poter utilizzare la mia funzione. Questo mi sembra qualcosa del tipo "creare una libreria Excel", o un semplice Add-In da installare sul computer... da allora, su qualunque istanza Excel l'add-in sarà disponibile e, una volta selezionato, la funzione si aggiungerà al dizionario standard di Microsoft. 

    Per quanto riguarda la creazione e la distribuzione delle tue funzioni, vedi l'eccellente articolo di Jan Karel Pieterse a: 

                      http://www.jkp-ads.com/Articles/DistributeMacro00.asp

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento