Proteggere un excel con VBA

Amateis, Sergio 0 Punti di reputazione
2024-04-18T09:28:24.42+00:00

Ciao a tutti,

sono un principiante in VBA... sto cercando di creare un excel che faccia un'estrazione, tipo numeri del lotto, e poi venga "congelato", in pratica deve permettere l'estrazione una sola volta.

Ho creato le macro, funziona tutto, mi manca la "protezione". In pratica dopo aver cliccato il pulsante che lancia la sub, mi serve un comando che protegge l'excel e:

  • impedisce di cliccare di nuovo il pulsante
  • impedisce di modificare qualunque cella, in tutti i 3 sheet
  • permette però di salvare l'excel "protetto" per poterlo riguardare in futuro

il comando di protezione immagino va a settare una password. Posso anche impedire che qualcuno vada a leggere il codice vba, trova la password e sprotegge l'excel ???

grazie !!

VB
VB
Linguaggio di programmazione orientato agli oggetti sviluppato da Microsoft implementato in .NET Framework. Precedentemente noto come Visual Basic .NET.
18 domande
Microsoft Q&A
Microsoft Q&A
Usare questo tag per condividere suggerimenti, richieste di funzionalità e bug con il team di domande e risposte Microsoft. Il team di domande e risposte Microsoft valuterà regolarmente i commenti e suggerimenti e fornirà aggiornamenti lungo il percorso.
53 domande
0 commenti Nessun commento
{count} voti

2 risposte

Ordina per: Più utili
  1. Yordan Ivanov 535 Punti di reputazione
    2024-04-18T12:00:12.85+00:00

    Buongiorno, Sergio,

    benvenuto in MS Q&A ed excel VBA.

    Proprio come puoi proteggere con password cartelle di lavoro e fogli di lavoro, puoi proteggere con password una macro in Excel affinché venga visualizzata (ed eseguita).

    Inserisci un pulsante di comando nel tuo foglio di lavoro e aggiungi le seguenti righe di codice:

    1. Innanzitutto, crea una semplice macro che desideri proteggere.

    Range("A1").Value = "This is secret code"

    1. Successivamente, fare clic su Strumenti, Proprietà VBAProject.

    Click Tools, VBAProject Properties.

    1. Nella scheda Protezione, seleziona "Blocca progetto per la visualizzazione" e inserisci due volte una password.

    Enter a Password Twice

    1. Fare clic su OK.
    2. Salva, chiudi e riapri il file Excel. Prova a visualizzare il codice.

    Apparirà la seguente finestra di dialogo:

    Password Protected from being Viewed

    Puoi ancora eseguire il codice facendo clic sul pulsante di comando ma non puoi più visualizzare o modificare il codice (a meno che tu non conosca la password).

    1. Se si desidera proteggere con password l'esecuzione della macro, aggiungere le seguenti righe di codice:
    Dim password As Variant
    password = Application.InputBox("Enter Password", "Password Protected")
    
    Select Case password
    	Case Is = False
    		'do nothing
    	Case Is = "easy"
    		Range("A1").Value = "This is secret code"
    	Case Else
    		MsgBox "Incorrect Password"
    End Select
    

    Risultato quando si fa clic sul pulsante di comando sul foglio:

    Password Protected from being Executed

    Spiegazione: La macro utilizza il metodo InputBox dell'oggetto Application. Se l'utente fa clic su Annulla, questo metodo restituisce False e non accade nulla (InputBox scompare). Solo quando l'utente conosce la password ("sempre facile") verrà eseguito il codice segreto. Se la password inserita non è corretta, viene visualizzato un MsgBox. Tieni presente che l'utente non può controllare la password nell'editor di Visual Basic perché il progetto è protetto dalla visualizzazione.

    spero che questa informazione aiuta

    Saluti,

    Giordano


  2. Amateis, Sergio 0 Punti di reputazione
    2024-04-18T13:50:40.63+00:00

    Grazie per la risposta Yordan. Questo risolve la mia ultima domanda (proteggere il codice) però ho ancora bisogno dei comandi VBA che permettono di proteggere anche tutti i fogli di tutto l'excel in modo che non si possano sovrascrivere... e che non si possa nemmeno più usare una seconda volta il pulsante di estrazione.


Risposta

Le risposte possono essere contrassegnate come risposte accettate dall'autore della domanda. Ciò consente agli utenti di sapere che la risposta ha risolto il problema dell'autore.