Domanda

Ho scritto uno strumento di reporting del database basato su Excel.Attualmente tutto il codice VBA è associato ad un singolo file XLS.L'utente genera il report facendo clic su un pulsante sulla barra degli strumenti.Sfortunatamente, a meno che l'utente non abbia salvato il file con un altro nome, tutti i dati segnalati verranno cancellati.

Dopo aver creato strumenti simili in Word, posso inserire tutto il codice in un file modello (.dot) e richiamarlo da lì.Se inserisco il file modello nella cartella di avvio di Office, verrà avviato ogni volta che avvio Word.Esiste un modo simile per impacchettare e distribuire il mio codice in Excel?Ho provato a utilizzare i componenti aggiuntivi, ma non ho trovato un modo per chiamare il codice dalla finestra dell'applicazione.

È stato utile?

Soluzione

È possibile modificare il file personal.xls dell'utente, archiviato nella directory di avvio di Excel (varia a seconda delle versioni di Office).Se hai molti utenti, però, può essere complicato.

Un modo alternativo per risolvere il problema è memorizzare la macro in un file modello (.xlt).Quindi, quando gli utenti lo aprono, non possono salvarlo nuovamente sul file originale, ma devono specificare un nuovo nome file con cui salvarlo.Lo svantaggio di questo metodo è che ottieni più copie del tuo codice originale ovunque con ogni file salvato.Se modifichi il file .xlt originale e qualcuno esegue nuovamente la vecchia macro in un file .xls salvato in precedenza, le cose possono andare fuori passo.

Altri suggerimenti

Sposta semplicemente il codice in un componente aggiuntivo di Excel (XLA): questo viene caricato all'avvio (supponendo che sia nella cartella %AppData%\Microsoft\Excel\XLSTART) ma se è un componente aggiuntivo, non una cartella di lavoro, solo le macro e l'avvio definito verranno caricate le funzioni

Se le funzioni dipendono dal foglio di calcolo stesso, potresti voler utilizzare una combinazione di modelli e componenti aggiuntivi.

Sto distribuendo parte di un'applicazione come questa, abbiamo componenti aggiuntivi per Word, Excel e Powerpoint (XLA, PPA, DOT) e anche versioni "ribbon" di Office 2007 (DOTM, XLAM e PPAM)

Il codice di avvio del componente aggiuntivo crea pulsanti della barra degli strumenti se non vengono trovati, ciò significa che in qualsiasi cartella di lavoro/documento/ecc possono semplicemente premere il pulsante della barra degli strumenti per eseguire il nostro codice (abbiamo due pulsanti di azione e un pulsante che visualizza una finestra di dialogo delle impostazioni)

I modelli non sono proprio la strada da percorrere per il codice VBA, i componenti aggiuntivi sono sicuramente la strada da percorrere...

Quindi per caricare le barre degli strumenti all'avvio stiamo usando qualcosa come...(verifica però se la barra degli strumenti esiste: il codice verrà eseguito per ogni foglio di lavoro aperto, ma le barre degli strumenti sono persistenti per la sessione utente)

Public Sub Workbook_Open()
     ' startup code / add toolbar / load saved settings, etc.
End Sub

Spero possa aiutare :)

Utilizzo sempre una combinazione componente aggiuntivo (xla)/modello (xlt).Il componente aggiuntivo crea il menu (o altri punti di ingresso dell'interfaccia utente) e carica i modelli secondo necessità.Scrive anche i dati che desideri mantenere in un database (Access, SQLServer, file di testo o anche un file xls).

La prima regola è mantenere il codice separato dai dati.Quindi, se in seguito si verificano correzioni di bug o altre modifiche al codice, è possibile inviare un nuovo componente aggiuntivo e tutti i modelli e i database non verranno interessati.

Hai esaminato ClickOnce per distribuire il file Excel?

Che ne dici di salvare un Excel in una cartella di rete con autorizzazioni di sola lettura?L'autenticazione può essere eseguita con l'autenticazione integrata di Windows e non è necessario memorizzare la password di connessione al database nel VBA.Quindi dovrai solo distribuire un collegamento a questa posizione ai tuoi utenti solo una volta.Se eseguirai un aggiornamento, modificherai solo i dati in quella cartella senza preavviso all'utente.

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