Il blog di Gianni Giaccaglini

Blog su VBA e VSTO
Gianni Giaccaglini

My Links

News

NB - V. anche gli ARTICOLI (in fondo a questa barra)
Solo quesiti validi a: giannigiac@tin.it
Il mio nuovo libro


La mia nipotina ELISA

Foto con dedica a ME di
Bill Gates giovanissimo
nei mitici anni 80!

Categorie Post

Categorie Articoli

Archivio

Immagini

Blog Stats

Disattivare le barre strumenti = pericolo! (Office 2003)

Disattivare le barre strumenti = pericolo! (Office 2003)

Queste annotazioni si rivolgono a quanti ancora utilizzano Office 2003. Infatti, come ho fatto notare in un altro mio intervento, le precedenti barre strumenti default sono di fatto ignorate in Office 2007, ove tali funzionalità sono assorbite dalla nuova Barra multifunzione, alias Ribbon. Pertanto le routine che sto per descrivere sono, di fatto, ininfluenti nel nuovo ambiente (alla faccia della compatibilità? beh, così va il mondo...).

Sia come sia, ecco due tipiche routine per Excel, Word o altri applicativi dell'agonizzante banda 2003, la prima volta a sgombrare il campo da barre strumenti e altre sovrastrutture per dare massima visibilità e, insieme, inibire il maggior numero di comandi all'utente finale, la seconda per ripristinare la situazione normale, solitamente e auspicabilmente (v. tra poco) alla chiusura del documento.

Sub Disattivazione()

'Disattiva Barre

Dim CmdBar As CommandBar

For Each CmdBar in Application.CommandBars

CmdBar.Enabled = False

Next

'Altre disattivazioni

With ActiveWindow

.DisplayHeadings = False

.DisplayWorkbookTabs = False

End With

With Application

.DisplayFormulaBar = False

.DisplayStatusBar = False

.ShowWindowsInTaskbar = False

End With

End Sub

 

Sub Attivazione()

'Riattiva Barre

Dim CmdBar As CommandBar

For Each CmdBar in Application.CommandBars

CmdBar.Enabled = True

Next

'Altre riattivazioni

With ActiveWindow

.DisplayHeadings = True

.DisplayWorkbookTabs = True

End With

With Application

.DisplayFormulaBar = True

.DisplayStatusBar = True

.ShowWindowsInTaskbar = True

End With

End Sub


Nota
- Si parla di modelli "chiusi", che gli inglesi definiscono come "dictatory application".


Focalizzando il discorso sulle barre va subito stigmatizzato un effetto collaterale indesiderato, probabilmente inatteso da chi ha escogitalo il ciclo For Each CmdBar... Next : se, disgraziatamente, per qualche interruzione imprevista Attivazione non v iene lanciata l'utente finale si trova a non più disporre di NESSUNA barra, inclusa quella del menu! Inutile infatti che costui si affanni col clic sull'area delle barre, non le vedrà più, neanche chiudendo e rilanciando Excel o Word.

Una brutta faccenda che, come si comprende, potrebbe nuocere alla popolarità dell'ingegnoso quanto incauto sviluppatore...

Primo rimedio (parziale)

Potrebbe consistere nell'occultare anziché disabilitare. In tal caso però - diosaperché, io no - la proprietà Visible = False non si lascia applicare alla barra dei menu, e chi si accontenta dovrebbe limitarsi al ciclo seguente:

'Nascondi Barre (tranne quella dei menu)

Dim i As Integer

For i = 1 to Application.CommandBars.Count

CommandBars(i).Visible = False

Next

Secondo rimedio (un po' migliore)

Agli amanti dei modelli dittatoriali, di sicuro insoddisfatti della soluzione appena vista, suggerisco infine di aggiungere l'istruzione seguente:

CommandBars("File").Enabled = False

che disabilita il solo menu File, ostacolando operazioni di salvataggio e stampa da parte dell'utente non programmate dal codice VBA. Infatti stavolta alla chiurura del modello anche in assenza dell'istruzione riabilitante

CommandBars("File").Enabled = True il menu File torna attivo e pimpante.


Nota
- Ovviamente stiamo parlando di palliativi, a fronte dei comandi manuali che restano invita, come Maiusc + F12 per salvare file.


posted on sabato 5 maggio 2007 11.34