Modulo di accesso VBA

Modulo di accesso VBA di Excel

È possibile creare un modulo utente basato sull'accesso in Excel VBA con tutto l'elenco a discesa degli ID di accesso e la password verrà condivisa separatamente. Ad un certo punto nel tempo, è necessario avere un'idea di creare un modulo utente di accesso basato su password che richiede all'utente di scegliere il proprio ID utente e inserire la password per accedere al foglio di lavoro richiesto.

In questo articolo, ti mostreremo come creare un modulo utente di accesso utilizzando Excel VBA.

Come creare un modulo utente di accesso?

Ad esempio, supponi di avere numeri di vendita per regione in diversi fogli di lavoro. Abbiamo 4 diversi nomi di zona e ogni foglio di lavoro di zona ha solo i suoi dati correlati. Ora l'idea è di creare un modulo di accesso in cui il responsabile vendite della zona "Est" dovrebbe vedere solo i dati della zona "Est", non qualsiasi altra zona ma come amministratore, dovresti vedere tutti i fogli di lavoro delle zone.

Puoi scaricare questo modello Excel di accesso VBA qui - Modello Excel di accesso VBA

Per prima cosa, dobbiamo inserire un nome di foglio chiamato "Admin". In questo foglio di amministrazione, dobbiamo creare le credenziali di "ID di accesso" e "Password".

Ho denominato la zona e la password nello stesso modo che puoi modificare in seguito. Per i nomi delle zone, ho creato l'intervallo di nomi come "ZoneList". Questo "Name Manager" verrà utilizzato successivamente in questo modulo utente di accesso.

Quando l'utente apre il file dovrebbe vedere un foglio fittizio in background, quindi crea un nuovo foglio e chiamalo "Foglio fittizio".

Utilizzando questi fogli di lavoro creeremo un modulo utente di accesso.

Passaggio 1: inserire il modulo utente

Premere il tasto ALT + F11 per aprire la finestra dell'editor VBA.

  • Dalla scheda "Inserisci" inserire "Modulo utente".

  • Questo creerà un nuovo modulo utente come quello sotto.

  • Premi il tasto F4 per visualizzare la finestra Proprietà, da questa finestra delle proprietà cambia il nome del modulo utente in "LoginUF"

  • Allo stesso modo utilizzando questa finestra delle proprietà possiamo giocare con le proprietà del form utente. Ho apportato alcune modifiche alle proprietà, puoi fare riferimento alla finestra delle proprietà di seguito per applicare le modifiche alle proprietà del modulo utente.

  • Ora il mio modulo utente ha questo aspetto.

Passaggio 2: progettazione del modulo utente

  • Dalla casella degli strumenti del modulo utente inserire due caselle etichetta e immettere il testo come mostrato di seguito.

  • Dalla casella degli strumenti inserire "Casella combinata".

  • Per questa casella combinata excel dobbiamo ottenere i nomi delle zone dal foglio di lavoro "Admin Sheet", quindi dalla finestra delle proprietà della "Casella combinata" prima dare un nome a questa casella combinata come "Zone_List_ComboBox" sotto la proprietà "Nome".

  • Dalla proprietà "Origine riga" della casella combinata immettere il nome assegnato all'elenco delle zone nel "Foglio di amministrazione".

  • Ora la nostra casella combinata dovrebbe mostrare i nomi delle zone nel suo elenco a discesa in Excel.

  • Per "Inserisci la tua password" dobbiamo inserire una "Casella di testo" dalla casella degli strumenti.

  • Per questa "casella di testo" dobbiamo cambiare la proprietà "Nome" e cambiarla in "Password_TB".

Ora, nella codifica per il modulo di accesso VBA, "Casella combinata" sarà indicata con il nome "Zone_List_ComboBox" e "Casella di testo" sarà indicata con il nome "Password_TB".

  • Inserire due "Pulsanti di comando" e immettere il testo come "Accedi" e "Esci".

Per il pulsante di comando "Accedi", modificare la proprietà del nome in "Login_CommandButton" e per il pulsante di comando "Esci" modificare la proprietà del nome in "LogOut_CommandButton".

Passaggio 3: codice

Abbiamo finito con la parte di progettazione del modulo utente di accesso VBA, è ora di scrivere il codice per creare un modulo utente basato sull'accesso in Excel VBA.

  • Fare doppio clic sul pulsante di comando "Accedi" per aprire la procedura secondaria vuota come quella sotto.

All'interno di questa procedura, dobbiamo scrivere il codice su cosa dovrebbe accadere se viene premuto il pulsante "Accedi".

Ho già scritto il codice, puoi copiare e incollare il codice dal basso all'interno della procedura sopra.

Codice:

Sottotitoli privati ​​Login_CommandButton_Click () If Zone_List_ComboBox.Value = "" Allora MsgBox "La zona non può essere vuota !!!", vbInformation, "Nome zona" Esci Sottotitoli se Se Password_TB.Value = "" Allora MsgBox "La password non può essere vuota !! ! ", vbInformation," Password "Exit Sub End If If Zone_List_ComboBox.Value =" Admin "And Password_TB.Value =" Admin "Quindi scaricami Dim Ws come foglio di lavoro per ogni Ws in ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws Sheets ("Admin"). Seleziona Else Dim ZoneName As String Dim Password As Variant ZoneName = Zone_List_ComboBox.Value Password = Application.WorksheetFunction.VLookup (ZoneName, Sheets ("Admin"). Intervallo ("A: B"), 2, 0 ) If Password Password_TB.Value Then MsgBox "Password is not matching", vbInformation,"Password errata" Exit Sub End If If Password = Password_TB.Value Then Unload Me Sheets (ZoneName) .Visible = True Sheets (ZoneName) .Select ActiveSheet.Range ("A1"). Select End If End If End Sub

Allo stesso modo, fare doppio clic sul pulsante di comando "Log Out" e immettere il codice seguente.

Codice:

 Sottotitoli privati ​​LogOut_CommandButton_Click () ThisWorkbook.Save ThisWorkbook.Close End Sub 

Ora fai doppio clic su "Modulo utente" (non su nessuno dei pulsanti inseriti) e aggiungi il codice sottostante.

Codice:

Private Sub UserForm_QueryClose (Cancel As Integer, CloseMode As Integer) "Impedisce l'utilizzo del pulsante Chiudi Se CloseMode = vbFormControlMenu Allora MsgBox" Fare clic sul pulsante Chiudi non funziona. " Annulla = True End If End Sub

  • Ora fai doppio clic sull'icona "ThisWorkbook". Questo si aprirà sotto il campo del codice vuoto.

Ora aggiungi il codice seguente in questo campo vuoto.

Codice:

 Private Sub Workbook_Open() Dim Ws As Worksheet Application.DisplayAlerts = False Application.ScreenUpdating = False For Each Ws In ActiveWorkbook.Worksheets If Ws.Name  "Dummy" Then Ws.Visible = xlSheetVeryHidden End If Next Ws LogInUF.Show End Sub 

  • We are done with the coding part of the form. Save the workbook as a “Macro-Enabled” workbook and reopen the workbook. Upon reopening the workbook we should see the below window.

  • From this user form, we need to choose the respective zone name and enter the associated password. For example, I will choose the “East” zone from the drop-down and enter the password.

  • If I click on “Log In” we can see only the “East” zone worksheet.

Similarly, if we log in with “Admin” we can access all the worksheets.

Like this, we can create a login based password protected worksheet access.

Things to Remember

  • You need to use the same names that we have given to the user form, text box, and command button and combo box in the coding.
  • You can change the zone name and password according to your wish.