Condividi:        

[Excel] Copiare testo in automatico da un foglio ad un altro

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

[Excel] Copiare testo in automatico da un foglio ad un altro

Postdi cinbera » 11/09/09 09:59

Ciao a tutti, vorrei sapere se esiste un modo (una funzione o una macro) per copiare automaticamente ciò che viene scritto su un foglio, su un altro foglio. Nello specifico: ho un foglio principale dove ho tutti i dati e 3 fogli secondari che contengono una selezione particolare dei dati totali. Aggiornando un foglio secondario, che contiene quindi solo una selezione dei dati (aggiungendo una riga per esempio), posso far si che la stessa riga venga aggiunta automaticamente nel foglio principale?

grazie mille

cinbera

ps è possibile proteggere un foglio con una password, nel senso di accesso, non di blocco celle o formule nascoste? Se non è possibile posso applicare la funzione di copia sopra descritta da un file all'altro, proteggendo con password l'accesso al file principale (questo lo so fare)?
cinbera
Newbie
 
Post: 6
Iscritto il: 11/09/09 09:53

Sponsor
 

Re: [Excel] Copiare testo in automatico da un foglio ad un altro

Postdi Anthony47 » 14/09/09 01:51

Ciao cinbera e benvenuto nel forum.
Non sono sicuro di aver capito, ma se i "3 fogli secondari . . contengono una selezione particolare dei dati totali" allora non dovresti introdurre nuovi dati sui file secondari ma sul foglio dei dati totali (immaginando che "totali" e "principale" siano la stessa cosa).

Per quanto riguarda la protezione, capisco che vuoi nascondere un foglio e aprirlo solo se l' utente conosce una password".
Per questo devi usare una macro di evento Worksheet_Activate, ad esempio
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Application.EnableEvents = False
JJ = ActiveSheet.Name
Sheets(JJ).Visible = False
AskPsw = InputBox("Password per foglio " & JJ, "Check Password")
If AskPsw = "Segretissima" Then Sheets(JJ).Visible = True: Sheets(JJ).Select
Application.EnableEvents = True
End Sub
che inserirai nel "Modulo di Codice" del foglio che vuoi nascondere; in questo modo il foglio si potra' "scoprire" (tramite Menu /Formato /Foglio /Scopri) solo conoscendo la password richiamata nel codice; infine proteggerai il progetto vba con una ulteriore password.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19222
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Copiare testo in automatico da un foglio ad un altro

Postdi cinbera » 14/09/09 07:21

Grazie, si mi serviva una password per un singolo foglio.
Il discorso è che se il foglio principale è protetto da password è perchè non tutti possono vedere i dati totali, ma solo la selezione che li riguarda e di conseguenza possono aggiornare solo quella. Per evitare perdite di dati o incomprensioni mi serviva un metodo automatico per far aggiornare a ciascuno la propria selezione di dati, ma che in automatico vada ad aggiungere i dati di un foglio secondario anche ai totali (non visibili, perchè protetti da password).
Spero di essermi spiegata un po' meglio :)

Grazie ancora

cinbera
cinbera
Newbie
 
Post: 6
Iscritto il: 11/09/09 09:53

Re: [Excel] Copiare testo in automatico da un foglio ad un altro

Postdi Anthony47 » 14/09/09 22:08

Si puo' fare, ma la cosa e' troppo dipendente dall' organizzazione dei dati che hai o che vuoi avere, dalla riservatezza che vuoi assegnare ai dati, dal metodo di distribuzione e aggiornamento del file, e in piu' richiede una conoscenza media del vba, per poter garantire l' aggiornamento delle macro in situazioni organizzative cambiate.
Insomma il forum ti puo' dare una mano su aspetti specifici ma il grosso del lavoro di analisi e di realizzazione devi poterlo fare in prima persona, perche' altrimenti ti ritroveresti in una trappola ingestibile.
Nel tuo ragionamento inoltre non capisco chi e' l' owner dei dati, se i singoli utenti (e il totale viene costruito mettendo insieme i dati presenti sui singoli fogli), o se sei tu (dal totale smazzi agli utenti le informazioni che loro devono poter accedere); a seconda dei casi l' approccio puo' essere diverso.

Infine, la macro del post precedente gia' consente di gestire piu' fogli con password diverse; basta installarla e personalizzarla nei Moduli di codice di tutti i fogli da proteggere.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19222
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Copiare testo in automatico da un foglio ad un altro

Postdi cinbera » 15/09/09 07:36

Girando tra i forum mi sono fatta un'idea della complessità della cosa. Non conosco il visual basic ma a questo punto mi ci devo dedicare un po'. Dal punto di vista concettuale non è una cosa complicata e ho già installato e personalizzato la macro per le password che funziona benissimo. Considera c'è un ufficio centrale, dove sono io, e 3 uffici dipendenti dal mio. L'owner dei dati sono io e ci sono 3 capoufficio dei 3 uffici dipendenti che devono vedere solamente i dati di competenza del proprio ufficio (non il totale nè quelli degli altri 2 uffici) e aggiornare solo quella; quindi inizialmente il file con il totale su un foglio (con password) e i parziali, ciascuno con password lo faccio io (già fatto e condiviso in rete e ognuno ha la propria password). Però l'ultimo step è che se uno dei 3 uffici aggiorna la propria parte (sono una decina di colonne, e per aggiornare intendo aggiungere una riga con i dati per ciascuna colonna) la stessa riga me la ritrovo aggiunta nel foglio dei dati totali. Sembra facile a parole... Ora studio un po' di vb, poi semi serve una mano magari riscrivo. Grazie ancora, metà del problema è cmq risolto :D
cinbera
cinbera
Newbie
 
Post: 6
Iscritto il: 11/09/09 09:53

Re: [Excel] Copiare testo in automatico da un foglio ad un altro

Postdi Anthony47 » 15/09/09 15:22

Ti deve essere chiaro che se non hai protetto con password il progetto vba, allora chiunque puo' accedere alle macro (deve fare tasto dx sul tab col nome del foglio) e vedere quale e' la password di foglio; e se anche hai protetto il progetto, in giro ci sono decine di programmi che aiutano a recuperare "password dimenticate". Per dire che la protezione e' una cosa piu' complessa di una password di excel, quindi se i dati sono sensibili o comunque delicati sei ancora esposta.
Su questo tema in genere non suggerisco nulla di preciso, perche' la sicurezza e' come un campo minato: si sa che ci sono le trappole, ma solo il progettista (tu o un tuo collaboratore) deve sapere dove sono e di che natura.

Tutto cio' mi porta a suggerire di non distribuire l' intera "cartella di lavoro", ma tanti file contenenti ognuno un foglio di lavoro diverso; e' meno scenografico ma praticamente piu' sicuro.
Lo puoi fare abbastanza facilmente con una macro registrata:
-chiudi tutti i file eccetto quello "da lavorare" che contiene il foglio Riepilogo
-partendo da un foglio diverso da Riepilogo avvii la registrazione macro, poi esegui in sequenza:
-vai sul foglio Riepilogo
-filtri i dati per il primo ufficio, copi questi dati
-crei un nuovo file (Menu /File /Nuovo)
-ci incolli i dati copiati dal Riepilogo
-sulla prima cella libera di col A inserisci la scritta "##zc## Nuovi dati" (senza virgolette)
-eventualmente proteggi con password il foglio (vedi dopo)
-salvi il file col nome che preferisci(es Ufficio1.xls); eventualmente assegna al file una sua password di lettura.
-chiudi il file tornando cosi' su Riepilogo
-filtri i dati del secondo ufficio e ripeti il ciclo per ogni file da generare
-chiudi il file di Riepilogo
-fermi la registrazione macro.
In questo modo puoi generare i file da distribuire ripetendo questa macro.

Per quanto riguarda l' aggiornamento del Riepilogo, se questo consiste nell' aggiungere su Riepilogo le sole righe aggiunte su ognuno dei file distribuiti, allora bisogna 1) assicurarsi che gli altri record non siano modificabili (eventualmente proteggi con password if foglio durante la fase di registrazione macro, dopo aver sprotetto le righe sottostanti i dati presenti) e 2)far aggiungere nuovi dati dopo la riga marcata ##zc## Nuovi dati.

Quando riceverai i file indietro:
sul file principale, quello con Riepilogo ma partendo da un foglio diverso da Riepilogo, registri una seconda macro mentre:
-apri il primo file, es Ufficio1
-attivi il foglio dati
-vai in fondo, selezioni l' ultima riga con nuovi dati, copia
-vai sul file principale, vai in fondo a Riepilogo e selezioni la prima cella libera
-incolli i dati copiati da file
-torni a Ufficio1 e cancelli la riga appena copiata
-chiudi il file senza salvare
-ripeti tutto il ciclo con gli altri Ufficioxx
-fermi la registrazione macro

La macro cosi' ottenuta e' da modificare per:
-quando api il file UfficioX, posizionarsi automaticamente in col A dell' ultima riga(*1)
-verificare se il contenuto di cella e' "##zc## Nuovi dati", se NO procedi con Copia, vai su Riepilogo, Incolla, Cancella riga, ripeti con la nuova "ultima riga"; se SI vai a Chiudi file. (*2)
-quando devi incollare su Riepilogo, posizionarsi automaticamente su prima riga libera. (*1)
*1: di base farai un Cells(Rows.count,1).End(XLup).select per posizionarti sull' ultima cella occupata di col A, oppure Cells(Rows.count,1).End(XLup).Offset(1,0).select per posizionarti sulla prima cella libera.
*2: qui dovrai realizzare un loop (Do /Loop) da ui esci quando trovi la stringa "##zc## Nuovi dati" in colonna A (Exit Do).

Guarda nel forum, ci sono spesso discussioni che trattano questi temi; ma se non risolvi facilmente posta ancora con il codice generato dallla seconda registrazione macro.

Direi che ce n' e' abbastanza per oggi...
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19222
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Copiare testo in automatico da un foglio ad un altro":


Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti