E' da un po' che non frequento queste contrade:
vediamo se riesco a darti un'idea...
In passato mi sono trovato a dover addottare un accorgimento simile; Più o meno avevo fatto così:
Preparazione:
- Avvia la registrazione di una macro ed importa nel tuo foglio l'immagine desiderata;
- Clicca una cella vuota del foglio, quindi seleziona di nuovo l'immagine e ferma il Registratore di Macro.
- Entra nell'Editor di Visual Basic e vai a vedere il codice della macro appena registrata. Dovresti trovare qualcosa del genere:
- Codice: Seleziona tutto
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 04/03/2013 by Utente
'
'
ActiveSheet.Pictures.Insert("G:\Grafica\Intervallo\sheep2.jpg").Select
Selection.ShapeRange.IncrementLeft 144.75
Selection.ShapeRange.IncrementTop 13.5
Selection.ShapeRange.ScaleWidth 2.33, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 2.33, msoFalse, msoScaleFromTopLeft
Range("J15").Select ' Questo è il click sulla cella vuota
ActiveSheet.Shapes("Picture 1").Select 'Quato è il nuovo click sull'immagine
End Sub
In realtà la macro non c'interessa, quello che vogliamo sapere è come si chiama l'oggetto cui è associata l'immagine.
Ce lo dice l'ultima riga del codice: per Excel, la nostra immagine si chiama Picture1 o, più precisamente,
ActiveSheet.Shapes("Picture 1").
Ora la possiamo "manomettere"
Da modalità Immediata (scorciatoia: CTRL-G), dài il seguente comando:
- Codice: Seleziona tutto
ActiveSheet.Shapes("Picture 1").Name = "MyLogo"
Dopodiché, occorre aggiungere questo codice:
- Codice: Seleziona tutto
Sub CheckPic()
Dim Flag_OK As Boolean
Flag_OK = False
For Each img In ActiveSheet.Shapes
If img.Name = "MyLogo" Then
Flag_OK = True
Exit For
End If
Next
If Not Flag_OK Then
a = MsgBox("Il foglio è stato manomesso!",VBOkOnly+VBCritical)
ActiveWorkBook.Close
End If
End Sub
Come Funziona:Questa Sub, in pratica, va a controllare TUTTE le immagini presenti nel foglio. Se ne trova una il cui nome è uguale a quello che hai dato tu, l'esecuzione continua, altrimenti l'apertura viene abortita.
Se qualcuno, per qualsiasi ragione, rimuove l'immagine e la rimpiazza con un'altra, introdurrà nel foglio un altro oggetto Picture, con un nome assegnato automaticamente e diverso da quello "autentico".
Però, come giustamente dicevano anche Anthony47 e Flash (questo sistema è più o meno l'oimplementazione di quanto suggeriva, codici Exif a parte) la protezione dei documenti Excel lascia un po' il tempo che trova... Come si diceva, se vuoi impedire la manomissione "accidentale" va più che bene, se invece si tratta anche solo di un "utonto" con un minimo di capacità di programmazione, non ci vuole molto a coprire quale codice viene eseguito.
Tra parentesi, fino alla versione 2003 (dopo, non so), Excel dava modo di aprire i documenti non solo senza le macro abilitate, ma anche bypassando la password messa a protezione del progetto (occorreva però un particolare programma, per fare questo), per cui i vari sistemi di "sicurezza" erano, di fatto, poco più che un pro-forma...
Spero di esserti statio utile!
Ciao,
MAx