Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Proteggere più fogli contemporaneamente

Ultimo Aggiornamento: 09/05/2015 20:17
Post: 197
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
06/05/2015 23:23

Salve e buona serata a tutti, avrei un piccolo problema con una macro che mi aggiorna 12 fogli mensili, i fogli sono protetti senza password avrei la necessita di sproteggere i fogli e riproteggerli alla fine dell’esecuzione della macro, ho provato con “ActiveSheet.Unprotect” dopo: “With Sheets(aMese)” ma non funziona, quale sarebbe il modo corretto? Grazie in anticipo per l’aiuto e buona serata a tutto il forum

Sub Aggiornamesi()
Application.ScreenUpdating = False
Dim aAnno As Variant
Dim aMese As Variant
aAnno = Array("Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Sett", "Ott", "Nov", "Dic")

For Each aMese In aAnno
    With Sheets(aMese)

codice.....
..............

End Sub
Excel 2002 - 2007
Post: 48
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
07/05/2015 08:32

Ciao
leggi questo 3D:

discussione

saluti
Domenico
Win 10 - Excel 2016
Post: 113
Registrato il: 02/08/2014
Città: MILANO
Età: 49
Utente Junior
excel 2010
OFFLINE
07/05/2015 13:02

Ciao Rosario prova con questa macro:



Sub Auto_open()

Application.ScreenUpdating = False

    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
    ws.Protect , userinterfaceonly:=True
    Next ws

Application.ScreenUpdating = True

End Sub


con questo comando "userinterfaceonly:=True" non c'è bisogno di protegge e sproteggere i fogli ogni volta che si esegue una macro.

Saluti.
[Modificato da rossi1975 07/05/2015 14:56]
Post: 115
Registrato il: 02/08/2014
Città: MILANO
Età: 49
Utente Junior
excel 2010
OFFLINE
07/05/2015 14:57

c'era un errore nella macro precedente e l'ho modificata... ora è ok.
Post: 197
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
07/05/2015 15:13

Buona giornata a tutti, grazie a dodo e rossi per l’interessamento, quello di dodo sul mio pc non visualizzo il link (non so se sia a causa del pc oppure non sia stato caricato nel forum) e non ho potuto leggere il suggerimento, ho provato il suggerimento di rossi ma non va continua a darmi “Errore di run-time 1004 La cella o il grafico è protetto quindi di sola lettura”, ho provato così:

Application.ScreenUpdating = False
Dim ws As Worksheet
    For Each ws In Worksheets
    ActiveSheet.Protect , userinterfaceonly:=True
Dim aAnno As Variant
Dim aMese As Variant
aAnno = Array("Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Sett", "Ott", "Nov", "Dic")

For Each aMese In aAnno
    With Sheets(aMese)


E così:

Application.ScreenUpdating = False
ActiveSheet.Protect , userinterfaceonly:=True
Dim aAnno As Variant
Dim aMese As Variant
aAnno = Array("Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Sett", "Ott", "Nov", "Dic")

For Each aMese In aAnno
    With Sheets(aMese)
ActiveSheet.Protect , userinterfaceonly:=True



ma niente, forse sbaglio io? Grazie ancora per l’aiuto e buona giornata a tutto il forum
Excel 2002 - 2007
Post: 1.830
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
07/05/2015 16:55

Buona sera a Tutti;
proverei con:

Option Explicit

Sub Aggiornamesi()
Application.ScreenUpdating = False
Dim aAnno As Variant
Dim aMese As Variant
aAnno = Array("Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic")
 
    For Each aMese In aAnno
        With Sheets(aMese).Select
            ActiveSheet.Unprotect Password:=""
'           Tuo codice; ad esempio:
                Cells(1, 1) = "Mese di: " & aMese
            ActiveSheet.Protect Password:=""
        End With
    Next
Application.ScreenUpdating = True
End Sub

poi, se non funziona come vorresti Tu, risolviamo.


A disposizione.

Buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 198
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
07/05/2015 17:30

Buona serata rossi, come già successo con dodo non riesco a visualizzare la tua modifica.
Ciao Giuseppe e buona serata grazie per il tuo intervento ma non va neanche cosi, mi dice che “Optinon Explicit non è valida all’esterno di una routine”, grazie ancora per l’interesse e buona serata a tutto il forum
Excel 2002 - 2007
Post: 1.831
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
07/05/2015 17:40

Buona sera, Rosario;
puoi controllare se, nel Tuo Codice esiste già un:

    Optinon Explicit 

Deve esistere una sola dichiarazione Optinon Explicit.


Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 116
Registrato il: 02/08/2014
Città: MILANO
Età: 49
Utente Junior
excel 2010
OFFLINE
07/05/2015 18:06

Rosario scusa forse mi sono espresso male... devi creare proprio una macro chiamata AUTO_OPEN... ; fai così crea un modulo nuovo, copiaci la macro che ti ho postato, e poi eseguila. Poi prova a lanciare la macro che avevi fatto tu all'inizio e vedi se funziona... praticamente con il codice che ti ho messo ogni volta che aprirai il tuo file excel tutti i fogli verranno protetti automaticamente... e potrai lanciare tranquillamente la tua macro che potrà apportare qualsiasi modifica ai tuoi fogli senza ogni volta stare a proteggere e sproteggere. Spero di essere stato un po più chiaro. Un grosso saluto a Giuseppe!!!
[Modificato da rossi1975 07/05/2015 18:07]
Post: 52
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
07/05/2015 18:11

Re:
Rosario1959, 07/05/2015 15:13:

... quello di dodo sul mio pc non visualizzo il link...

Ciao
solo per precisare che (colpa mia non aver evidenziato la parola), devi cliccare sulla parola discussione del mio post.

scusa e saluti


Domenico
Win 10 - Excel 2016
Post: 199
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
07/05/2015 22:52

Buona serata, andiamo con ordine:
Scusa dodo non avevo capito che bisognava ciccare sulla parola “discussione” adesso che il forum ha cambiato look, prima si vedeva il link, comunque ho provato il codice di quella discussione di rossi ma non ho risolto.
Chiedo scusa anche a te rossi per non aver capito che dovevo creare una nuova macro, ho creato anche quella come hai suggerito in un nuovo modulo ma non va neanche, forse utilizzo il tuo primo codice e non quello modificato che non riesco a vedere sul mio pc.
Cia Giuseppe ho controllato in effetti c’era un’altra “Option Explicit” ma senza codice forse era servito per qualche prova ed era rimasto, comunque ho cancellato il codice inutile ed ho utilizzato “Optino Explicit” nel mio codice, ma non va neanche cosi.
Grazie ancora per l’aiuto e la disponibilità, e una buona serata a tutto il forum
Excel 2002 - 2007
Post: 1.833
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
08/05/2015 07:41

Buona gornata, Rorario.

Nel file in allegato trovi due pulsanti:
-     Aggiornamesi
-     Sproteggi

Aggiornamesi:
-     Apre il primo Foglio di lavoro indicato in aAnno
-     Sprotegge il Foglio di lavoro
-     Scrive nella Cella "A1" un Record; modificherai questa informazione inserendo la Tua Procedura
-     Protegge il Foglio di lavoro
-     Passa al Foglio di lavoro successivo, fino al completamento della lista indicata in aAnno
-     Al termine dell'operazione, torna sul Foglio di lavoro "Gen"

Sproteggi:
-     Sprotegge tutti i Fogli di lavoro indicato in aAnno

Questa seconda procedura, non era richiesta, ma, ho preferito prevederla per eventuali modifiche nei vari Fogli di lavoro.



A disposizione.

Buon Lavoro e buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 200
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
08/05/2015 10:40

Buona giornata Giuseppe, ho provato il codice del tuo file ma continua ad andare in debug mi da “Errore di run-time 424 necessario oggetto” evidenziandomi la prima parte del mio codice, ma non credo che l’errore venga generato dal codice che è in pratica una formula, altrimenti dovrei avere l’errore anche con i fogli sprotetti, invece con i fogli sprotetti il codice funziona aggiornando tutte le celle del range correttamente, ho provato a fare delle ricerche su questo errore 424 ma non riesco a capire quale sia l’oggetto mancante, i fogli sono protetti con pass “pippo” li proteggo con “ActiveSheet.Unprotect Password:="pippo" “ ma continua ad andare in debug. Allego il file certamente tu riesci a capire cosa genera l’errore. Grazie per l’aiuto e una buona giornata a te e a tutto il forum
Excel 2002 - 2007
Post: 201
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
08/05/2015 11:52

scusate ma non vedo il file caricato desso provo di nuovo
Excel 2002 - 2007
Post: 1.836
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
08/05/2015 12:50

Buon pomeriggio, Rosario;
per scrupolo ho provato ad utilizzare il File che ho allegato in Risposta #12, salvato con estensione .xls, con Excel 2000.
Non ho riscontrato problemi.
Per verificare la natura dell'errore:
-    Errore di run-time 424
prova a lanciare semplicemente il mio file senza alcuna modifica; vedrai che non ci sono problemi.

Sul Tuo File, ho riscontrato due problemi; l'Errore di run-time 424 viene generato dalle Formule:
-   .Range("A10:A611").FormulaR1C1 = "=RC[108]"
-   .Range("B10:B611").FormulaR1C1 = "=IF('Elenco Farmaci'!RC[-1]<>"""",'Elenco Farmaci'!RC[-1],"""")"
-   .Range("BO10:BO611").FormulaR1C1 = "=SUMPRODUCT(RC[-63]:RC[-3]*(MOD(COLUMN(RC[-63]:RC[-3]),2)=0))"
-    .Range("CZ10:CZ611").FormulaR1C1 = "=SUM(RC[-34]:RC[-2])"
-   .Range("DB10:DB611").FormulaR1C1 = "='Elenco Farmaci'!RC[-104]"
-   .Range("DC10:DC611").FormulaR1C1 = "=RC[-40]"
-   .Range("DD10:DD611").FormulaR1C1 = "=RC[-4]"
-   .Range("DE10:DE611").FormulaR1C1 = "=RC[-3]+RC[-2]-RC[-1]"
-   .Range("DG10:DG611").FormulaR1C1 = "=IF(RC[-109]="""","""",IF(RC[-3]=(RC[-5]+RC[-4]),""da Richiedere"",IF(RC[-3]>=(RC[-5]+RC[-4]),""Attenzione"","""")))"
-   .Range("DH10:DH611").FormulaR1C1 = "=IF(RC[-110]="""","""",IF(RC[-3]<'Elenco Farmaci'!R9C5,""Verificare"",""""))"
Credo che il l'Errore venga generato dal "." che precede "Range"; prova a togliere tutti i punti iniziali e vediamo cosa succede.

Il secondo problema è nel NomeFoglio "Sett"; nella Tua dichiarazione:
-    aAnno = Array("Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic")
Il NomeFoglio è diverso; Set con una sola "t".
Quindi, o modifichi il NomeFoglio oppure modifichi Array da:
- "Set"
a
-    "Sett"



A disposizione.

Buon Lavoro e buona serata.

Giuseppe

 

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 118
Registrato il: 02/08/2014
Città: MILANO
Età: 49
Utente Junior
excel 2010
OFFLINE
08/05/2015 13:26

Ciao Rosario quello che dice Giuseppe, che saluto, è tutto esatto... ho levato i punti davanti a range eh ho modificato il nome del foglio da sett a set, seguendo i consigli del sopracitato Giuseppe. Ora sembra che funzioni.
Per quanto riguarda la mia macro non dovevi scrivere autoopen ma bensì auto_open. Ho tolto quelle miriadi di protect ed unprotect che avevi messo nelle macro ed ho aggiunto la macro che già avevo postato, ed anche qui sembra funzionare tutto; la macro puoi anche non chiamarla auto_open... io l'ho messa in quel modo perchè con quella formula all'avvio del file excel viene caricata qualsiasi cosa messa sotto quella dicitura, quindi all'avvio si proteggeranno automaticamente tutti i fogli. Ti ho aggiunto anche una'altra macro che ti toglie tutte le protezioni nel caso tu voglia fare qualche modifica ai fogli è il modulo 24 (sblocca). Ultima cosa ho rinominato il file .xlsm perchè il formato .xls a me dava qualche problema soprattutto quando salvavo le modifiche. Colgo l'occasione per ringraziare ancora una volta il grande Giuseppe, che è sempre tanto disponibile.
Allego file modificato, un saluto.
Post: 58
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
08/05/2015 13:38

Ciao
mi inserisco solo per raccomandare "prudenzialmente" di evitare l'uso di parole riservate Excel nelle variabili di uso comune; pertanto eviterei l'uso di Set ed utilizzerei Sett

cari saluti
Domenico
Win 10 - Excel 2016
Post: 202
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
08/05/2015 16:48

Buon pomeriggio a tutti adesso si che funziona, è tutto a posto grazie a voi del forum, ho provato anche il file di rossi ed va benissimo, adesso ho due soluzioni. Ringrazio dodo e rossi per l’aiuto e la disponibilità, e mi permetto un saluto particolare a Giuseppe ricordandole che l’invito è sempre valido compresa......... l’Infermiera!!!!!!!!! [SM=x423030] [SM=x423028]
Ancora grazie infinite e alla prossima
Excel 2002 - 2007
Post: 1.837
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
08/05/2015 18:22

Se non si ride un pò ...!
@Rosario:
Prego inviare ... foto Infermiera (non si sa mai!!!) Stop
Se foto è Ok e infermiera ... molto, molto paziente.
Arrivo!!!

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 675
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Senior
Excel 365
OFFLINE
08/05/2015 18:42

Se non si ride un po'....!
[SM=x423045] [SM=x423045] [SM=x423045]

[SM=x423026]
[Modificato da alfrimpa 08/05/2015 19:27]

Alfredo
Post: 203
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
08/05/2015 22:12

Buona serata, scusate se riapro ma credo di aver venduto la pelle dell’orso prima di averlo ucciso, se da un lato ho risolto è però venuto fuori un’altro problema che il codice “Inserimento riga” non funziona con i fogli nascosti, ho provato a modificare il codice dei fogli così:

Worksheets("Gen").Visible = True
Rows(Y).Select	
Selection.Insert Shift:=xlDown
Worksheets("Gen").Visible = False

Va ad aggiungere tutte le righe sul foglio “Elenco Farmaci” invece di aggiungere un rigo per foglio, come posso modificare il codice? Scusate ancora e buona serata a tutti

p.s.: Giuseppe puoi fidarti ho verificato, è molto attraente, è…. molto, molto paziente!!!!!

Excel 2002 - 2007
Post: 204
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
09/05/2015 00:15

Buona serata, probabilmente ho risolto inserendo ad inizio codice:

Sheets("Gen").Visible = True
Sheets("Feb").Visible = True
Sheets("Mar").Visible = True

ecc..ecc..

e a fine codice i valori a “False”, non è molto geniale ma sembra funzionare, una buona nottata a tutti
Excel 2002 - 2007
Post: 1.838
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
09/05/2015 05:26

Buona giornata, Rosario;
non vorrei mai giocarmi l'opportunità che mi hai così cortesemente offerto ma ...
Credo che con il Codice:

Sheets("Gen").Visible = True
Sheets("Feb").Visible = True
Sheets("Mar").Visible = True

La Riga venga aggiunta nel Foglio di lavoro attivo e non non nel Foglio di lavoro "Mese"

Sarei più propenso a consigliarti:

Worksheets("Gen").Visible = True
Worksheets("Gen").Select
Rows(y).Select
Selection.Insert Shift:=xlDown
Worksheets("Gen").Visible = False

L'struzione:
Worksheets("Gen").Select

definisce il Foglio di lavoro nel quale inserire la Riga

In un ottica di risparmio, mi permetto di suggerirti:

Worksheets("Gen").Visible = True
Worksheets("Gen").Select
Cells(y, 1).EntireRow.Insert
ActiveSheet.Visible = False


Il risultato finale non cambia e ... risparmiamo una riga di Codice; con buona pace di Chi, in Europa, insiste sul risparmiare il più possibile. [SM=x423035]



A disposizione.

Buon fine settimana.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 60
Registrato il: 06/04/2013
Utente Junior
2010
OFFLINE
09/05/2015 09:10

Ciao
sempre nello spirito del "risparmio" invocato dall'amico Giuseppe, che ne dite di:

 Worksheets("Gen").Cells(y, 1).EntireRow.Insert
senza bisogno di scoprire e nascondere il foglio?

saluti
Domenico
Win 10 - Excel 2016
Post: 205
Registrato il: 11/10/2011
Città: CAPO D'ORLANDO
Età: 65
Utente Junior
2003, 2007, 2010
OFFLINE
09/05/2015 20:17

Buona serata a tutti,grazie Giuseppe e dodo per i suggerimenti li ho provati entrambi e vanno benissimo, adesso ho altre due soluzioni, ho provato più volte il file e adesso posso dire di averlo completatato veramente grazie a voi del forum sopratutto a rossi, dodo e Giuseppe, grazie ancora e una buona serata a tutti
Excel 2002 - 2007
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:15. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com