Risolto Distribuire un addin di Excel a livello aziendale

Bax

Utente abituale
Original poster
2 Maggio 2021
384
79
30
Udine
www.simracingleague.it
Pro 2016
Sto creando un add-in per alcuni utenti in una azienda.
I file su cui lavora l'add-in si trovano sul server aziendale ma il file xlam deve essere installato sui PC dei singoli utenti (per quello che so io)
Ho installato il file e configurato Excel degli utenti (per ora 3) e tutto fila liscio.

Ho però il problema di aggiornare questo add-in (essendo in fase di sviluppo la cosa è abbastanza frequente) e per ora me la cavo con un file batch, presente sul PC di ognuno degli utenti, che semplicementre copia il file .xlam dal server al PC nella cartella corretta. Tutto previa email di avviso aggiornamento.
Funziona ma preferirei trovare qualcosa di meglio.

Se cerco in rete trovo riferimenti a metodi utilizzabili con Office 365 (mi par di capire ) mentre noi utilizziamo la versione precedente.

Avete esperienza diretta? Che metodo utilizzate?
 

klingklang

Excel/Power BI Expert
Expert
20 Ottobre 2017
6.708
1.638
345
48
San Giovanni in Persiceto (BO)
2016, 365
Ciao. Non credo ci siano altri modi se non ospitare il plug-in in una risorsa condivisa (Dropbox, Onedrive) e far puntare ad esso tutte le installazioni delle singole macchine. In questo modo, quando aggiorni il plug-in, a seguito della sincronizzazione tutti saranno automaticamente aggiornati.
 

xalbex

Utente abituale
28 Febbraio 2019
119
8
18
35
Parma
Microsoft 365
Ciao Bax @Bax io ho risolto compiando l’.xlam nella cartella XLSTART di Microsoft Excel.
Una volta aperto qualsiasi file Excel (anche uno vuoto) viene aperto in background anche il file .xlam quindi caricate tutte le routine al suo interno.
Non so se per il tuo scopo questo è un bene o un male, però è una soluzione comodissima, perché basta condividere con gli utenti la versione aggiornata dell’add-in per permettere agli utenti di incollarla nella cartella, quindi utilizzarla all’istante.
 

Bax

Utente abituale
Original poster
2 Maggio 2021
384
79
30
Udine
www.simracingleague.it
Pro 2016
Ciao xalbex @xalbex , io uso lo stesso metodo (forse nel primo post non mi ero spiegato bene) ma mi ritrovo con colleghi per i quali anche il copiare un file in una cartella specifica (e anche "nascosta") è un problema.
Quindi, come scrivevo, mi sono fatto un file .BAT che copia da solo il file (da server a PC utente). L'utente viene avvisato di un aggiornamento e teoricamente deve solo fare doppio clic sul file .BAT che ha messo dove vuole lui sul suo PC.
Ma anche questa procedura è "rognosetta" per chi non ha dimestichezza, uno spera che tutto funzioni automaticamente senza dover fare nulla, al massimo il solito messaggio a cui si clicca OK senza nemmeno leggere :ROFLMAO:

Speravo ci fosse qualcosa di più "pratico" e mi sto informando seguendo il suggerimento di klingklang @klingklang
 

Bax

Utente abituale
Original poster
2 Maggio 2021
384
79
30
Udine
www.simracingleague.it
Pro 2016
... ospitare il plug-in in una risorsa condivisa (Dropbox, Onedrive) e far puntare ad esso tutte le installazioni delle singole macchine...
Sono ritornato dopo un po' a pensare a questo (che dovrò prima o poi risolvere).

Tu citi Dropbox e Onedrive perchè offrono degli strumenti di sincronizzazione immagino... cioè in generale non è uno strumento già "insito" in Windows 10 (e il corrispettivo OS del server, qualunque esso sia).
Corretto?
 

Il Mago di Excel

Utente abituale
17 Marzo 2022
173
46
30
Arezzo
Microsoft 365
Ciao Bax @Bax ,

avevo la tua stessa necessità tempo fa e ho risolto mettendo il componente aggiuntivo (*.xlam) su una cartella di rete condivisa interna (cosa che personalmente preferisco rispetto alle soluzioni in cloud).
All'apertura del file di lavoro con un pò di codice VBA apro il componente aggiuntivo e questo funziona perfettamente da anni ormai.

Requisiti:
- il file di lavoro deve essere salvato come *.xlsm, perché contiene VBA
- nel file di lavoro inserire il seguente codice in "Questa_cartella_di_lavoro"
Visual Basic:
Private Sub Workbook_Open()
    OpenAddIn
End Sub

Private Sub OpenAddIn()
    Dim xRet As Boolean
    xRet = IsWorkBookOpen("TuoAddIn.xlam")
    'evitare di riaprire il componente aggiuntivo
    If xRet Then
        'MsgBox "The file is already open", vbInformation, "TITOLO MESSAGGIO"
    Else
        Workbooks.Open Filename:="\\cartelladirete\cartella\sottocartella\TuoAddIn.xlam", ReadOnly:=True
    End If
End Sub

Function IsWorkBookOpen(Name As String) As Boolean
    Dim xWb As Workbook
    On Error Resume Next
    Set xWb = Application.Workbooks.Item(Name)
    IsWorkBookOpen = (Not xWb Is Nothing)
End Function

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Workbooks("TuoAddIn.xlam").Close SaveChanges:=False
End Sub

La cosa importante è ReadOnly:=True, perché così il file *.xlam ti rimane modificabile. In pratica lo puoi aprire mentre gli altri ci lavorano e fare tutte le modifiche che vuoi, che gli altri utenti vedono soltanto dopo che riaprono il file di lavoro.

Potresti mettere il codice della Sub OpenAddIn anche direttamente nella Sub Workbook_Open, non cambia niente.
Io preferisco dividere, perchè così il codice mi rimane più chiaro.

E alla fine chiudendo il file di lavoro bisogna chiudere anche il componente aggiuntivo, il che fa la Sub Workbook_BeforeClose.
 

Bax

Utente abituale
Original poster
2 Maggio 2021
384
79
30
Udine
www.simracingleague.it
Pro 2016
Non ci avevo mai pensato a mettere anche l'add-in in rete (tranne che per essere copiato sul PC degli utenti)
Nel mio caso i file Excel sono "dedicati" e quindi non mi pesa il fatto di memorizzarli come .xlam perchè li distribuisco io

Mi piace come soluzione! Grazie

Magari ce ne saranno altre di soluzioni ma considero la risposta molto soddisfacente e chiudo.