Condividi:        

Eseguire macro su più fogli

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

Eseguire macro su più fogli

Postdi apocrimata75 » 16/11/12 14:40

Scusa la domanda, ma è possibile far eseguire la stessa macro ad ogni foglio presente sullo stesso file considerando che ogni foglio ha un nome diverso ?

Ho provato questa:
Codice: Seleziona tutto
Sheets("foglio1").Select
    Application.Run "'topolino.xls'!Aggiorna"
    Sheets("riepilogo3").Select
    Application.Run "'"topolino.xls'!Aggiorna"


funziona ma vorrei evitare di scrivere tutti i fogli, visto che sono più di 30.

Grazie.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Sponsor
 

Re: Eseguire macro su più fogli

Postdi peppo55 » 16/11/12 16:12

Ciao apocrimata75

Avvia il registratore per le macro, assegna un nome alla tua macro e abbina a Ctrl una lettera ad esempio Ctrl+q
Spegni il registratore e nel modulo copia la tua macro.
In qualsiasi foglio selezionato, premendo i tasti la macro va in esecuzione.
peppo

Excel 2010
peppo55
Utente Senior
 
Post: 167
Iscritto il: 30/09/12 13:51

Re: Eseguire macro su più fogli

Postdi apocrimata75 » 16/11/12 16:22

Proverò più tardi, ma la macro dovrebbe partire da sola e fare "aggiorna" dal primo all'ultimo foglio . In prati io sono e resto sul foglio 1.
Windows 7 - Office 2010
apocrimata75
Utente Senior
 
Post: 189
Iscritto il: 28/05/11 13:22

Re: Eseguire macro su più fogli

Postdi ricky53 » 16/11/12 21:01

Ciao,
per capire: quali azioni compie la macro "Aggiorna" ?

Puoi inviare il codice
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Eseguire macro su più fogli

Postdi Anthony47 » 16/11/12 23:41

Prova con
Codice: Seleziona tutto
For I = 1 To Worksheets.Count
    Sheets(I).Select
    Application.Run "'topolino.xls'!Aggiorna"
Next I
Sheets("Foglio1").Select

Conoscendo il listing di "'topolino.xls'!Aggiorna" si puo' fare qualcosa di piu' furbo.

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

Re: Eseguire macro su più fogli

Postdi mpsinf » 19/11/12 22:13

La richiesta di apocrimata75 però richiedeva di rimanere sul foglio1.
A parte questo io mi trovo con il seguente problema, sono nel foglio1 e con l'esecuzione di una macro, se si verifica una determinata condizione, copia una serie di colonne nel foglio2 e fa una chiamata ad una macro con un "call macro" la quale va al foglio2 ed esegue del codice. Quando termina questa seconda macro il controllo torna alla macro precedente che però dovrebbe capire che dobbiamo tornare al foglio1. Forse sarebbe più logico far eseguire del codice nel foglio2 quando viene rilevato un cambiamento in una determinata cella. Volevo conferma avendo letto su un altro post che sarebbe possibile creando una macro, invece che in un modulo, direttamente nel foglio stesso.
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: Eseguire macro su più fogli

Postdi Anthony47 » 20/11/12 00:13

Come dici, quando la macro chiamata (tramite Call Macro) finisce, il controllo torna alla macro chiamante; basta quindi inserire Sheets("Foglio1").Select e sei certo che Foglio1 e' nuovaente attivo.
L' alternativa e' che usi sempre un riferimento esclicito ai fogli, rendendoti cosi' indipendente dal foglio al momento attivo; questa tecnica e' certamente da preferire, ma purtroppo e' piu' incline a nascondere gli errori.

Esistono numerosi "eventi" che innescano delle "macro di evento", ad esempio esise un evento Worksheet_Change e la possibilita' della relativa macro di gestione [Private Sub Worksheet_Change(ByVal Target As Range)]; le macro di evento vanno inserite nei "moduli di codice" del foglio a cui l' evento e' legato; un modo rapido per arrivare a questo modulo e' fare tasto dx sul tab col nome del foglio in discussione, e qui scegliere Visualizza codice.
Ci sono anche eventi a livello di Workbook, che vanno messi nel modulo ThisWorkbook.

Le macro di evento ovviamente si scatenano nel momento in cui l' evento si manifesta, se gli eventi sono abilitati (che presuppone che essi possano essere abilitati o disabilitati, con Application.EnableEvents = True /Application.EnableEvents = False); con la Call invece sai esattamente la situazione complessiva, quindi e' piu' facile da gestire.

Infine, prima di pensare a una gestione di evento, suggerisco di verificare se le circostanze che hai in mente realmente generano un "evento" (semplificando, gli eventi "in genere" sono legati a operazioni fatte dall' utente, es la digitazione di un dato, l' attivazione di un foglio, ...; ma hai visto anche eventi tipo "document complete" che invece dipende dal caricamento di un documento).
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Eseguire macro su più fogli":


Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti