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

Protezione di file Excel: come evitare confusioni

Protezione di file Excel: come evitare confusioni

Questo articoletto nasce da una sollecitazione dell’amico Emanuele Mattei (grande stimolatore di share office.it) che mi ha pregato di chiarire le varie modalità per proteggere uno spreadsheet. La confusione cui allude il titolo è tra due diversi strumenti, il primo fornito da tutti i membri dell’allegra banda MS Office, il secondo peculiare di Excel:

1)       Protezione contro l’apertura del file;

2)       Protezione contro l’accesso, parziale o totale, alle celle di un foglio di lavoro.

Il secondo metodo, volendo (ma, come mostrerò, è sconsigliabile) si può spingere addirittura al punto di impedire all’utente qualsiasi azione, magari occultandogli tutto o quasi.

Per far comprendere all’inclita e al volgo in modo sperimentale come stanno le cose, ho preparato un modellino. Si chiama FileSuperProtetto.xlsm e si può scaricare tramite questo link:

http://www.giannigiaccaglini.it/files/FileSuperProtetto.xlsm

L’archivio ha il formato Open XML di Excel 2007. Il motivo sta nel fatto che questo nuovo formato è XML, pertanto, come vedremo più avanti, è fragile per chi desidera la massima segretezza. Cmunque, a beneficio di tutti, riporto i contenuti visibile del foglio di lavoro, che altro non sono che una spiegazione delle varie facce del problema, sintetizzate all’inizio.

Il file è protetto in apertura mediante la password “amba”che va digitata nella finestrella che appare sul comando Apri. Dopo di che si presenta come segue. Le intestazioni di colonne e righe qui sono omessi, ma la cella in alto è A6, e la maxicella (unita) è in B6:E8.

Cucù cucù!
Il foglio non c'è più...

 

SPIEGAZIONE

I passi compiuti per proteggere e occultare le celle del foglio sono stati i seguenti:

1. Selezionare le celle interessate, al limite l'intero foglio

2. HOME > Formato > Formato celle...

3. Nel susseguente riquadro, scheda  Protezione, attivare ENTRAMBE le caselline, Nascosta e Bloccata

4. selezionare le righe utili (1:18, nel nostro caso) e occultarle

5. Comando Proteggi Foglio (nel riquadro Home < Formato o l'omonimo in REVISIONE)

6. Assegnare la password "amba"

7. Proteggere con password ("amba" o altra) il Progetto VBA

8. Salvare il file

Nota – Questo intervento è troppo drastico. Di solito si bloccano solo le celle su cui non si vuole che l’utente intervenga (le formule, tipicamente, e altri dati costanti), lasciando libere quelle in cui egli deve esercitare l’input.

E le macro?

Questo sistema impedisce all'utente sia di accedere che di vedere i dati, le formule e le macro del modello.

Ma non è del tutto al riparo da macro presenti su un DIVERSO modello!

Se infatti si apre un altro workbook, es. Spia.xlsm, poi quello protetto, la seguente macro presente su Spia:

Sub EsploraCelle()

  Workbooks(2).Activate 'Attiva il modello protetto

  For Each cella In Range("C1:E2") 'Un range come un altro...

    MsgBox cella.Address & vbLf & cella

  Next

End Sub

Segnala tutti gli indirizzi e relativi valori. E sarebbe facile ricostruirli, in automatico, in un foglio di Spia.

Però c'è, perlomeno!, un limite: non si possono ottenere le formule.

 Provare la seguente modifica alla MsgBox:

 MsgBox cella.Address & vbLf & cella.Formula

Si riceve un rifiuto, più esattamente un arresto della macro per "errore dell'applicazione", beninteso

solo se nel modello "spiato" il progetto macro è protetto, altrimenti anche le formule sono visualizzate.

LE SPIEGAZIONI PROSEGUONO SULLA DESTRA DEL MODELLO COME SEGUE:

Possibili rimedi...

1) crittografare, almeno, i dati critici (anche qui con una password! Forse troppe?)

2) caricare tali dati e/o formule tramite la macro di autoavvio del modello.

...e una BRUTTA notizia, con Office 2007!

Purtroppo il nuovo formato Open XML di Excel o Word 2007, essendo fatto di testi e non di file binari si presenta 

del tutto trasparente, anche per i dati e formule protette e nascoste. Provare per credere con queste semplici mosse:

1. Chiudere questo stesso modello protetto così severamente contro l’accesso dell’utente

2. modificarne l'estensione da xlsm a zip poi doppio clic sulla sua icona

3. navigare fra le cartelle a archivi vari fino a trovare sheet1.

In tale file XML è facile trovare tutti i dati da noi così pazientemente protetti. In particolare:

   SUM(C1:E3)

   1116

Anche chi sa poco di formato OOXML si rende subito conto che la formula e il valore della cella protetta C4 sono svelati!

e lo stesso per tutte le altre. D'altronde c'era da aspettarselo: un formato aperto e self-documented non può avere segreti!

L'unico modo per ovviare a questo inconveniente, restando in ambito Office 2007 è l'uso del formato XLSB

la qual cosa, purtroppo, vale solo per Excel, in quanto non esiste un equivalente in Word 2007.

PROTEZIONE DEL FILE!

In realtà è questa la soluzione ideale per chi vuole impedire anche l'accesso a un modello Excel o un documento Word.

Diverse persone la ignorano ed è per questo che ricorrono al metodo fin qui illustrato, come apparente, unica alternativa.

Il piccolo segreto (che tale è per molti...) è semplice:

1. Creato un nuovo documento Excel o Word, lanciare Salva con nome...

2. Prima dell'OK attivare l'icona Strumenti

3. Scegliere Opzioni generali, fornendo la Password di lettura e/o di scrittura

Alla riapertura si avrà le richiesta della password impostata, altrimenti

il caricamento abortisce.

Il bello è che stavolta ogni tentativo di visualizzare il file Open XML fallisce e

si viene informati che ciò è impossibile, perché è compresso e crittografato.

A buon intenditore cos’altro dire?

?>

?>

posted on giovedì 4 dicembre 2008 11.26