Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Apri programma excel solo se il codice è corretto

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Apri programma excel solo se il codice è corretto

Postdi Tool » 23/04/09 14:57

Ciao,
Ho un programma in excel da far partire solamente inserendo determinati codici da 4 cifre, ad esempio

0099
0098
0056
0409
7455

etc.

Come posso fare?

Ciao e grazie.
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Sponsor
 

Re: Apri programma excel solo se il codice è corretto

Postdi biancocandido55 » 23/04/09 16:55

Ciao Tool,

non capisco bene se per programma intendi una macro che gira solo se una cella è piena o se per programma intendi un file esterno che viene caricato successivamente.

Comunque se per "programma" intendi una macro facciamo un esempio:
la macro si chama pippo e i valori sono nella cella B8 allora inserisci questo codice :

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$8" Then pippo
End Sub


Ciao
biancocandido
biancocandido55
Utente Senior
 
Post: 305
Iscritto il: 03/03/06 10:15

Re: Apri programma excel solo se il codice è corretto

Postdi pietrol » 23/04/09 17:05

Ciao tool
potresti spiegare meglio dove inserisci i codici, cosa vuol dire "un programma in excel", come dovrebbe partire, basta uno dei codici o ci vogliono tutti, ecc.
L'unica cosa che hai spiegato, e che sapevamo benissimo, è come sono fatti i codici a 4 cifre, è un po' poco.

ciao
pietrol
il lupo ululà, il castello ululì
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: Apri programma excel solo se il codice è corretto

Postdi Anthony47 » 23/04/09 17:38

Pietrol e biancocandido ti hano fatto abbastanza domande, e bianco ti ha anche dato un primo spunto...

Se il tuo obiettivo e' nascondere dati sensibili, tieni presente che il meccanismo di protezione di excel e' alquanto debole; lo puoi irrobustire avendo una buona padronanza del vba, ma non riuscirai mai a impedire a qualsiasi smaliziato che conosca due o tre trucchi di aprire il tuo file segreto; insomma ..non usare questo metodo per registrare il pin del tuo bancomat.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Apri programma excel solo se il codice è corretto

Postdi Tool » 27/04/09 09:07

diciamo che non voglio proteggere dati importanti, facciamo che ognuno di quei codici è il codice di un utente, il quale inserendolo, deve far aprire un file excel. Mi hanno detto che potrei usare Visual Basic, io ho il 6.0. si può fare? e se si come potrei agire?

quindi riepilogando step by step:

SCHERMATA DESKTOP
LANCIO FILE EXCEL
INSERIRE CODICE A 4 CIFRE
SE E' ESATTO IL FILE EXCEL SI APRE

grazie
ciao.
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Apri programma excel solo se il codice è corretto

Postdi Flash30005 » 27/04/09 11:39

Apri un foglio di Excel
Entri nel codice Vba
ti posizioni in ThisWorkbook
e incolli tutta questa macro
Codice: Seleziona tutto
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long

Private Sub Workbook_Open()
Dim NUtente(5), Codice(5)
    Dim sBuffer As String
    Dim lSize As Long
    sBuffer = Space(255)
    lSize = Len(sBuffer)
    Call GetUserName(sBuffer, lSize)
    Utente = UCase(Left(Trim(sBuffer), 10))
    colu = 0
    Dim ut As String
    Do
     colu = colu + 1
     If Mid(Utente, colu, 1) = Chr(0) Then Exit Do
     ut = ut & Mid(Utente, colu, 1)
    Loop
    Utente = Trim(ut)
Accesso = 0
NUtente(1) = "AAAA"      '<<<< Nome del 1° utente che potrà aprire il foglio
NUtente(2) = "BBBB"   '<<< etc
NUtente(3) = "CCCC"
NUtente(4) = "DDDD"
NUtente(5) = "EEEE"

Codice(1) = "0001"     '<<<<< Codice del 1° utente che potrà aprire il foglio
Codice(2) = "0002"    '<<< etc
Codice(3) = "0003"
Codice(4) = "0004"
Codice(5) = "0005"
For I = 1 To 5
    If Utente = NUtente(I) Then
    Accesso = 1
    Exit For
End If
Next

If Accesso = 1 Then
    Dim Message, Title, Default, MyValue
    Message = "Inserire Codice" ' Imposta il messaggio.
    Title = "Apertura Foglio" ' Imposta il titolo.
    Default = "xxxx" ' Imposta il valore predefinito.    '<<< puoi togliere le xxxx e lasciare vuoto con ""
    MyValue = InputBox(Message, Title, Default) ' Visualizza il messaggio, il titolo e il valore predefinito.
End If
On Error GoTo salta
If Accesso = 1 And Codice(I) = MyValue Then
    MsgBox "Codice Corretto"
    Exit Sub
Else
salta:
    MsgBox "Codice Errato"        '<<<< messaggio che puoi togliere per evitare che l'uitente non autorizzato intervenga bloccando la macro
On Error GoTo 0
    Workbooks("Cartel1.xls").Close SaveChanges:=False    '<<<< Nome del file di excel
End If

End Sub


A questo punto dovrai proteggere il VBAProject con una password
Salvi e chiudi il foglio in una cartella del disco
Selezioni il file di excel e con tasto destro selezioni Invia Collegamento al Desktop
Trascini questo collegamento dal desktop in Esecuzione Automatica (passando attraverso lo Start > programmi >Esecuzione Automatica
All'avvio del Pc si aprirà il file di excel se non è l'utente designato il file si chiude se è un utente autorizzato dovrà digitare il Codice corretto corrispondente a quelli inseriti nella macro.

Ciao

P.s.
Ti ricordo che all'apertura del file (con utenti così impostati non avrai la possibilità nemmeno tu se non vai in debug al messaggio di Codice Errato (con Ctrl+Pausa), il messaggio che potrai togliere, una volta messa a punto la routine, serve proprio per interrompere la Routine.
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Apri programma excel solo se il codice è corretto

Postdi Tool » 27/04/09 13:01

grazie1000, però io vorrei aprire il file non solo ogni volta che riavvio il pc, ma anche quando cambio utente, ad esempio utente A apre con il suo codice e usa, poi chiude file, arriva utente B apre con il suo codice e usa, poi chiude file e così via.


grazie.
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Apri programma excel solo se il codice è corretto

Postdi Flash30005 » 27/04/09 13:23

Ma scusa, quando un utente avvia il Pc entra come utente A quando deve entrare un altro utente non cambi utente al Pc con disconnetti utente A e entra utente B?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Apri programma excel solo se il codice è corretto

Postdi Flash30005 » 27/04/09 13:46

Se vuoi accedere sempre al file con S.O. operante (senza dover cambiare utente) allora la macro è semplificata

Codice: Seleziona tutto
Private Sub Workbook_Open()
Dim NUtente(5), Codice(5)   '<<<< aumentare la variante 5 al vettore (Nutente, Codice) in funzione degli utenti
    Dim MessageU, Title, Default, MyValueU
    MessageU = "Utente" ' Imposta il messaggio.
    TitleU = "Riconoscimento Utente" ' Imposta il titolo.
    DefaultU = "" ' Imposta il valore predefinito.
    MyValueU = InputBox(MessageU, TitleU, DefaultU) ' Visualizza il messaggio, il titolo e il valore predefinito.
Accesso = 0
NUtente(1) = "AAAA"
NUtente(2) = "BBBB"
NUtente(3) = "CCCC"
NUtente(4) = "DDDD"
NUtente(5) = "EEEE"
Codice(1) = "0001"
Codice(2) = "0002"
Codice(3) = "0003"
Codice(4) = "0004"
Codice(5) = "0005"
For I = 1 To 5     '<<<< aumentare la variante 5 in funzione degli utenti
    If MyValueU = NUtente(I) Then
    Accesso = 1
    Exit For
End If
Next
If Accesso = 1 Then
    Message = "Inserire Codice" ' Imposta il messaggio.
    Title = "Apertura Foglio" ' Imposta il titolo.
    Default = "xxxx" ' Imposta il valore predefinito.
    MyValue = InputBox(Message, Title, Default) ' Visualizza il messaggio, il titolo e il valore predefinito.
End If
On Error GoTo salta
If Accesso = 1 And Codice(I) = MyValue Then
   ' MsgBox "Codice Corretto"
    Exit Sub
Else
salta:
    MsgBox "Codice Errato"   '<<< commentare solo quando la macro è stata messa a punto (e se si ricordano Nomi e Codici abbinati - SI RISCHIA DI NON APRIRE PIU' IL FILE)
On Error GoTo 0
'Workbooks("Utente2.xls").Close savechanges:=False   '<<< Togliere il commento se ci sono altri fogli aperti

ActiveWorkbook.Save           '<<<< commentare questo codice se ci sono altri fogli aperti - Abbinato al codice sottostante
Application.Quit           '<<<< commentare questo codice se ci sono altri fogli aperti - Chiude l'applicativo Excel
End If

End Sub


Fai sapere

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Apri programma excel solo se il codice è corretto

Postdi Tool » 27/04/09 15:05

Una sola parola:

"PERFETTO"

grazie
ciao
ci sentiamo.
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Apri programma excel solo se il codice è corretto

Postdi Tool » 03/06/09 10:24

ciao, una volta entrato nel programma posso prendere Nutente e codice (se sono in lista e quindi se ho l'accesso al programma) per pastarli ad esempio quando rinomino un file txt tramite l'esecuzione del programma?

grazie1000
ciao
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Apri programma excel solo se il codice è corretto

Postdi Anthony47 » 06/06/09 19:37

La domanda di tool probabilmente e' sfuggita a Flash; comunque mi pare che la macro ti mette nella variabile MyValueU il nome dell' utente, che puoi gestire come serve nella stessa macro.
Se ti serve gestirla in una macro differente allora dovrai definire la variabile "pubblica" inserendo questa istruzione in testa a un "Modulo" di codice:
Codice: Seleziona tutto
Public MyValueU As String
Quando sei nell' editor delle macro: Menu /Inserisci /Modulo; copi l' istruzione e la incolli nel frame di dx.

Contemporaneamente dovrai eliminare la Dim della stessa variabile nella macro di Workbook_Open.

Oppure ti scrivi il valore in una cella libera del tuo workbook e poi la usi liberamente in tutte le macro.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Apri programma excel solo se il codice è corretto

Postdi Tool » 08/06/09 11:28

PERFETTO
GRAZIE1000 ;)
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26


Torna a Applicazioni Office Windows


Topic correlati a "Apri programma excel solo se il codice è corretto":


Chi c’è in linea

Visitano il forum: salatony e 7 ospiti