Condividi:        

Creare un file Excel con fogli visibili in base all'accesso

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

Creare un file Excel con fogli visibili in base all'accesso

Postdi JanVathek » 08/10/24 17:04

Ciao

È possibile creare un file Excel in cui, se aperto con una password, si vedono 3 schede, mentre se aperto in sola lettura (senza inserire la password), solo 2 schede sono visibili e una rimane nascosta. Ecco come puoi farlo:
Il file ha 3 schede (ad esempio, "Master", "caso1" e "caso2").

ci deve essere una macro dietro a ciò?

Il file master è il file che comanda, il file caso 1 riporta solo in lettura quanto scritto sul master ma con dei filtri

Ho protetto la struttura con password e il vba con password ed ho provato a mettere questa macro ma no nva mi da error time error 101

Codice: Seleziona tutto
Private Sub Workbook_Open()
    If Not ThisWorkbook.ReadOnly Then
        Sheets("master").Visible = True
    Else
        Sheets("master").Visible = False
    End If
End Sub
JanVathek
Newbie
 
Post: 7
Iscritto il: 04/12/23 15:24

Sponsor
 

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Anthony47 » 08/10/24 17:53

Si, si puo' fare solo con macro (come hai fatto tu)

Quanto all'errore, potrebbe essere che il file sia salvato in una directory "non affidabile"; prova a dichiarare la directory "affidabile":
-Menu /Opzioni /Centro protezione; impostazione Centro protezione /Posizioni attendibili.
Se il percorso attuale del file non e' attendibile, prova a spostarlo in una directory "attendibile"; oppure dichiari la directory Attendibile tramite il pulsante Aggiungi Nuova Posizione. Oppure (piu' prudentemente) puoi dichiarare quel file Attendibile tramite il sottomenu Documenti attendibili

Fai sapere...
(e se non risolvi indica bene il codice di errore e su quale istruzione)
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 09/10/24 08:54

ciao

sul punto sopra dice questo "consenti di considerare attendibile il percorso" ed ho messo attendibile

errore run time "1004! impossibile impostare la proprietà visibile per la classe worksheet" la struttura è ovviamente protetta da password perchè nessuno può scoprire il file solo se entro direttamente con password

ho usato questo codice , ma continua a non funzionare con lo stesso errore

Codice: Seleziona tutto
Private Sub Workbook_Open()
    If ThisWorkbook.ReadOnly Then
        Sheets("Foglio3").Visible = xlSheetVeryHidden
    Else
        Sheets("Foglio3").Visible = xlSheetVisible
    End If
End Sub


ps

purtroppo ho dovuto creare un secondo account, non mi fa resettare la password dicendomi è sbagliata( ma ho un salva password) e non mi arriva la password di reset ( il codice su sfondo blu è difficile da leggere)
Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Anthony47 » 09/10/24 09:36

Ho protetto la struttura con password
Questa impostazione impedisce di visualizzare /nascondere fogli.
Se vuoi tenerla, devi sproteggere e riproteggere all'interno della Workbook_Open; tipo:
Codice: Seleziona tutto
Private Sub Workbook_Open()
ThisWorkbook.Unprotect Password:="pippo"
    If Not ThisWorkbook.ReadOnly Then
        Sheets("master").Visible = xlSheetVisible
    Else
        Sheets("master").Visible = xlSheetVeryHidden
    End If
ThisWorkbook.Protect Password:="pippo"
End Sub

Quanto ai problemi di login, questo forum ha due posizioni di login: se usi il secondo (poco prima dell'elenco delle discussioni) dovresti avere meno problemi col captcha
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 09/10/24 10:39

Anthony47 ha scritto:
Ho protetto la struttura con password

Codice: Seleziona tutto
Private Sub Workbook_Open()
ThisWorkbook.Unprotect Password:="pippo"
    If Not ThisWorkbook.ReadOnly Then
        Sheets("master").Visible = xlSheetVisible
    Else
        Sheets("master").Visible = xlSheetVeryHidden
    End If
ThisWorkbook.Protect Password:="pippo"
End Sub



quando si chiude il file automaticamente torna protetto?

ora da errore run time 9, indice non incluso nell intervallo
la macro l'ho inserita nel docs generale e non nel foglio master
Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Anthony47 » 09/10/24 12:58

Come vedi la macro ripristina la protezione a livello di Workbook prima del suo completamento:
Codice: Seleziona tutto
ThisWorkbook.Protect Password:="pippo"
(ovviamente invece di "pippo" userai la tua password)

Il codice va inserito nel modulo vba ThisWorkbook /QuestaCartellaDi Lavoro, essendo una macro di evento di Workbook
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 09/10/24 13:03

si si avevo inserito la passowrd in entrambi ma da sempre
errore run time 9, indice non incluso nell intervallo

il vba l'ho altresi protetto con passowd può influire ciò?
Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Anthony47 » 09/10/24 18:03

Se la struttura e' stata sprotetta (si vede sul tab Revisione del ribbon), se il nome foglio su cui si verifica l'errore esiste, se la directory in cui il file e' posizionato e' dichiarata "Attendibile", se il codice e' stato inserito nel modulo ThisWorkbook /QuestaCartellaDiLavoro del file che stai aprendo, allora non so che dire...
Prova a eseguire manualmente la macro e dimmi quale e' il comportamento: accedi al modulo ThisWorkbook /QuestaCartellaDiLavoro, selezioni una riga di codice, premi F8; ad ogni F8 verrà eseguita la riga evidenziata

La protezione del codice vba non ha impatto
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 10/10/24 08:59

funziona era il nome sbagliato del foglio

grazie
Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 18/10/24 15:17

ho un dubbio

se uno sul suo pc non attiva le macro o ha la protezione della macro dove si chiede .....entrando vede il file nascosto?
Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Anthony47 » 18/10/24 17:36

Se le macro non sono in esecuzione allora il file si aprirà come era stato salvato l'ultima volta.
Potresti valutare un meccanismo per cui al salvataggio venga sempre nascosto il foglio Master; ad esempio puoi usare l'evento BeforeSave per nascondere il foglio e poi AfterSave per ripristinarlo (se era visibile), tipo con questo codice (da inserire nel modulo ThisWorkbook /QuestaCartellaDiLavoro):
Codice: Seleziona tutto
Dim VorH   'In testa a ThisWorkbook /QuestaCartellaDiLavoro

'------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'
VorH = Sheets("master").Visible
ThisWorkbook.Unprotect Password:="pippo"
Sheets("master").Visible = xlSheetVeryHidden
ThisWorkbook.Protect Password:="pippo"
End Sub

'------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'
ThisWorkbook.Unprotect Password:="pippo"
Sheets("master").Visible = VorH
ThisWorkbook.Protect Password:="pippo"
Saved = True
End Sub

Fai attenzione alla Dim VorH, che deve essere posizionato "In testa a ThisWorkbook /QuestaCartellaDiLavoro", prima di qualsiasi Sub o Function

Prova, ma tieni sempre presente che questo tipo di protezione e' idonea piu' che altro a proteggere da distrazioni, non da malintenzionati
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 21/10/24 10:24

se compilo tutto da errore Errore 50290, metodo unprotect dell'ccetto "work book", ho visto che quando salva nasconde automaticamente il foglio

Codice: Seleziona tutto

Dim VorH   'In testa a ThisWorkbook /QuestaCartellaDiLavoro

'------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'
VorH = Sheets("master").Visible
ThisWorkbook.Unprotect Password:="pippo"
Sheets("master").Visible = xlSheetVeryHidden
ThisWorkbook.Protect Password:="pippo"
End Sub

'------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'
ThisWorkbook.Unprotect Password:="pippo"
Sheets("master").Visible = VorH
ThisWorkbook.Protect Password:="pippo"
Saved = True
End Sub

e sotto mettere  o è gia inglobata sopra?

Private Sub Workbook_Open()
ThisWorkbook.Unprotect Password:="pippo"
    If Not ThisWorkbook.ReadOnly Then
        Sheets("master").Visible = xlSheetVisible
    Else
        Sheets("master").Visible = xlSheetVeryHidden
    End If
ThisWorkbook.Protect Password:="pippo"
End Sub

Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Anthony47 » 21/10/24 12:28

ho visto che quando salva nasconde automaticamente il foglio
L'obiettivo del codice e' proprio quello

se compilo tutto da errore Errore 50290, metodo unprotect dell'ccetto "work book"
Mi fai vedere l'intero contenuto del modulo ThisWorkbook /QuestaCartellaDiLavoro, quale istruzione va in errore e in che momento compare l'errore?
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 21/10/24 16:33

Anthony47 ha scritto:
ho visto che quando salva nasconde automaticamente il foglio
L'obiettivo del codice e' proprio quello

vorrei lo facesse prima che chiudi il foglio non quando salvi e sparisce

se compilo tutto da errore Errore 50290, metodo unprotect dell'ccetto "work book"
Mi fai vedere l'intero contenuto del modulo ThisWorkbook /QuestaCartellaDiLavoro, quale istruzione va in errore e in che momento compare l'errore?


ti tutto il work book? ho inserito il codice sotto dentro la cartella di lavoro

Codice: Seleziona tutto

Dim VorH   'In testa a ThisWorkbook /QuestaCartellaDiLavoro

'------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'
VorH = Sheets("master").Visible
ThisWorkbook.Unprotect Password:="pippo"
Sheets("master").Visible = xlSheetVeryHidden
ThisWorkbook.Protect Password:="pippo"
End Sub

'------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'
ThisWorkbook.Unprotect Password:="pippo"
Sheets("master").Visible = VorH
ThisWorkbook.Protect Password:="pippo"
Saved = True
End Sub
Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Anthony47 » 21/10/24 18:06

vorrei lo facesse prima che chiudi il foglio non quando salvi e sparisce
Intendi "prima di chiudere il file"? In questo caso tieni presente che non e' obbligatorio salvare il file quando viene chiuso, ma potrebbe essere stato salvato piu' volte precedentemente
E comunque l'evento BeforeSave nasconde il foglio, ma l'evento AfterSave lo ri-mostra, se era visibile

Mi interessa tutto il contenuto del modulo vba che si chiama o ThisWorkbook oppure QuestaCartellaDiLavoro; questo modulo dovrebbe contenere anche la Sub Workbook_Open
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 22/10/24 08:10

il contenuto è scritto sopra c'è solo quello
Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Anthony47 » 22/10/24 09:07

c'è solo quello
E allora c'e' qualcosa che non va...
Eravamo partiti da un file che se aperto in sola lettura manteneva nascosto /nascondeva il foglio Master, e questo veniva gestito da una Sub Workbook_Open, e questo codice per funzionare deve essere inserito in un modulo particolare del vba che si chiama thisWorkbook oppure QuestaCartellaDiLavoro (per informazioni sulla struttura del vba, viewtopic.php?f=26&t=103893&p=647675#p647675)
Ora se questa Sub Workbook_Open non c'è più (assodato che prima c'era ed era nella posizione giusta, perche' faceva la sua funzione) o parliamo di un nuovo file o il codice della Sub Workbook_BeforeSave e Sub Workbook_AfterSave è stato inserito nel modulo sbagliato.
Guarda il link che ti ho appena dato per localizzare il modulo nel "progetto vba" del tuo file
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 24/10/24 13:07

io ho salvato tutto questo codice dentro thisWorkbook oppure QuestaCartellaDiLavoro, gli altri mi da errore

potrei chiederi quale deve essere il codice completo da inserire in thisworkbbok- comprensivo di vorh?
grazie :x
Codice: Seleziona tutto
Private Sub Workbook_Open()
ThisWorkbook.Unprotect Password:="pippo"
    If Not ThisWorkbook.ReadOnly Then
        Sheets("master").Visible = xlSheetVisible
    Else
        Sheets("master").Visible = xlSheetVeryHidden
    End If
ThisWorkbook.Protect Password:="pippo"
End Sub



questo codice mi da errore

Dim VorH 'In testa a ThisWorkbook /QuestaCartellaDiLavoro

'------------
Private Sub Workbook_BeforeSave( .....

Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Anthony47 » 24/10/24 21:27

In ThisWorkbook (o QuestaCartellaDiLavoro, dipende dalla versione Office che usi) devi metterci tutto questo:

Codice: Seleziona tutto
Dim VorH   'In testa a ThisWorkbook /QuestaCartellaDiLavoro

'------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'
VorH = Sheets("master").Visible
ThisWorkbook.Unprotect Password:="pippo"
Sheets("master").Visible = xlSheetVeryHidden
ThisWorkbook.Protect Password:="pippo"
End Sub

'------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'
ThisWorkbook.Unprotect Password:="pippo"
Sheets("master").Visible = VorH
ThisWorkbook.Protect Password:="pippo"
Saved = True
End Sub


Private Sub Workbook_Open()
ThisWorkbook.Unprotect Password:="pippo"
    If Not ThisWorkbook.ReadOnly Then
        Sheets("master").Visible = xlSheetVisible
    Else
        Sheets("master").Visible = xlSheetVeryHidden
    End If
ThisWorkbook.Protect Password:="pippo"
End Sub



Se hai degli errori, spiega quando compaiono, quale riga va in errore e quale messaggio compare
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Creare un file Excel con fogli visibili in base all'acce

Postdi Milanooooo » 25/10/24 20:19

da questo errore error run tine 50290 metodo unprotect dell oggetto non riuscito e si blocca il foglio

sono andato avanti con f5


Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'
ThisWorkbook.Unprotect Password:="pip"
Milanooooo
Utente Junior
 
Post: 12
Iscritto il: 09/10/24 08:50

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Creare un file Excel con fogli visibili in base all'accesso":


Chi c’è in linea

Visitano il forum: Nessuno e 19 ospiti