PDA

View Full Version : [Excel+VBA] Nascondere elementi interfaccia


21-5-73
15-02-2011, 23:38
Ciao
Per un semplice esercizio scolastico (faccio le serali niente di che :) ) avrei bisogno di organizzare un foglio di Excel, che si occupa di fare dei calcoli, in modo che l' ipotetico utente che lo andasse ad utilizare non possa in alcun modo modificarlo. Potrei fare tutto bloccando il foglio con password, ma sarebbe banale ed esteticamente poco valido. Per cui mi sono documentato un pò e ho trovato una soluzione accettabile andando a nascondere tutta l' interfaccia di Excel.
Usando VBA inserisco nell' evento Workbook_Open() questa porzione di codice:

Workbooks.Application.CommandBars.ActiveMenuBar.Enabled = False
Dim nome_menu
For Each Menu In Application.CommandBars
nome_menu = Menu.Name
Menu.Enabled = False
Next
Workbooks.Application.DisplayFormulaBar = False
Workbooks.Application.DisplayFullScreen = True
ActiveWindow.DisplayWorkbookTabs = False

E poi per evitare che tutti i file di Excel vengano aperti senza interfaccia, nell' evento Workbook_BeforeClose inserisco quest' altra porzione di codice:


Workbooks.Application.CommandBars.ActiveMenuBar.Enabled = True
For Each Menu In Application.CommandBars
Menu.Enabled = True
Next
Workbooks.Application.DisplayFullScreen = False
Workbooks.Application.DisplayFormulaBar = True


Ora funziona tutto perfettamente come dovrebbe, ma c'è un particolare che vorrei migliorare. Mi rimangono visibili la colonna coi numeri di riga e la riga con le lettere di colonna, mi sapreste indicare come toglierle? Si dovrebbe trattare di mettere a false prima e true dopo il nome di quelle 2 componenti o mi sbaglio?

21-5-73
16-02-2011, 22:24
Ok ho risolto, nel caso servisse a qualcuno basta aggiungere
ActiveWindow.Displayheadings = False e poi ovviamente rimetterla a True

zuper
17-02-2011, 12:36
1- con excel 2007 se rimpicciolisi la finestra (non full screen) si tornano a vedere la maggior parte delle cose che hai nascosto :)
2- ti toglie la visuale di tutti i fogli excel che hai aperto in quel momento
3- sempre con 2007 di default hai le macro disabilitate per cui quando ti apre il foglio vedi tutto e ti chiede se vuoi abilitarle, solo dando si il tuo procedimento funziona (con le limitazioni dei punti 1 e 2)

se lo scopo è che qualcuno non possa modificarlo...
per me nn va bene :)

21-5-73
17-02-2011, 13:31
1- con excel 2007 se rimpicciolisi la finestra (non full screen) si tornano a vedere la maggior parte delle cose che hai nascosto :)
2- ti toglie la visuale di tutti i fogli excel che hai aperto in quel momento
3- sempre con 2007 di default hai le macro disabilitate per cui quando ti apre il foglio vedi tutto e ti chiede se vuoi abilitarle, solo dando si il tuo procedimento funziona (con le limitazioni dei punti 1 e 2)

se lo scopo è che qualcuno non possa modificarlo...
per me nn va bene :)

Ciao, lo scopo era avere un foglio di Excel che fosse quanto più simile a un programma stand alone e che si ipotizzava fosse dato in uso ad un utente direttamente dal datore di lavoro. Se gli togli dei pezzi o lo usi per quello che non è stato progettato è ovvio che ci possano essere limitazioni. E' stato fatto usando Excel 2003.
1- Come ti dicevo il full screen è basilare in questo progetto, toglierlo lo modifica totalmente, e cmq una volta inserito il codice VBA è impossibile andarlo a modificare tant'è che ogni modifica viene fatta su un foglio senza codice. Non ho provato su 2007 però mi sembra strano che mettendo a false la visualizzazione di un componente questo resti visibile. Proverò.
2- Ovvio, infatti il secondo pezzo di codice serve proprio a rimettere Excel a default una volta uscito dal mio foglio, non sò come tu lo abbia provato, ma per precisa mia scelta una volta aperto il mio lavoro, l' utente non ha nessuna possibilità di intervento sul computer, se non lavorare su quello e poi una volta finito uscire tramite un pulsante da me programmato. Non può aprire più fogli perchè non non gli è permesso.
3- Purtroppo su questo hai ragione, in laboratorio tutti i computer hanno le macro abilitate :-(

Detto questo, a me lavorare con Excel piace, se hai consigli per migliorare il tutto dimmi pure, posso solo ringraziarti.