Condividi:        

[EXCEL] Salvare i singoli fogli in vari file e percorsi

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] Salvare i singoli fogli in vari file e percorsi

Postdi Dylan666 » 17/09/10 17:17

Salve a tutti avrei la seguente necessità
Ho un file excel con una decina di fogli, sciascuno con nome diverso.
Avrei bisogno di una macro in modo tale che ogni foglio vada a salvarsi in un file excel nuovo che abbia come nome il nome del folgio originario. Inoltre ogni file deve esser alvato in una cartella diversa.

Date le variabili e le impossibili semplificazioni supongo che dovrò scrivere 10 macro molto simili, specificando per ciascuna il percorso.

Mi potreste suggerire il codice di partenza?

Grazie
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Sponsor
 

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Anthony47 » 17/09/10 19:49

Lieto di rivederti.
Ad esempio questa macro:
Codice: Seleziona tutto
Sub Dylan()
'
FPrefix = ""   'Prefisso che sara' aggiunto al nome foglio per formare il nome file
'
DDir = ActiveWorkbook.Path
For i = 1 To ActiveWorkbook.Sheets.Count
If Sheets(i).Visible = False Then GoTo SkipSh
Sheets(i).Select
' (1)...
With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = DDir  '<<< Filtro per nome
    .Title = "Scegli la directory per il foglio " & ActiveSheet.Name
    .Show
If .SelectedItems.Count = 0 Then    'directory non scelta
    MsgBox ("Scelta non effettuata, procedura abortita"): Exit Sub
End If
DDir = .SelectedItems(1) & "\"
End With
' (2)...
NewFName = DDir & FPrefix & ActiveSheet.Name & ".xls"
ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=NewFName
    ActiveWorkbook.Close
' (3)...
If ActiveSheet.Index <> ActiveWorkbook.Sheets.Count Then
    ActiveSheet.Visible = False
    Else: MsgBox ("Operazione completata, i fogli salvati sono Nascosti, eccetto l' ULTIMO"): Exit Sub   '<<<
End If
SkipSh:
Next i
'
End Sub

Mettila su un file di controllo, ma lavorera' sul Workbook attivo al momento del lancio.
Il blocco (1) chiede in quale directory si vuole salvare; il blocco (2) crea un file dal worksheet attivo, lo salva col nuovo nome e lo chiude; il blocco (3) "nasconde" i fogli man mano che vengono salvati, eccetto l' ultimo.
La tecnica del nascondere i fogli serve per riprendere il lavoro qualora esso venga abortito perche' non e' stata scelta una directory di salvataggio: rilanciando la macro i fogli nascosti non vengono risalvati e il lavoro puo' riprendere da dove era stato interrotto.
E' ovvio che la gestione della mancata selezione puo' essere fatta in modo piu' furbo che non uscire e basta e questo puo' portarti a riconsiderare la tecnica del "nascondi foglio"

Per scoprire i fogli nascosti, se non vuoi fare piu' volte Menu /Formato /Foglio /Scopri, puoi lanciare questa macro:
Codice: Seleziona tutto
Sub Scopri()
For i = 1 To ActiveWorkbook.Sheets.Count
Sheets(I).Visible=True
Next I
End Sub

Ovviamente la potresti concatenare con la prima, con una Call Scopri prima dell' Exit Sub marcata <<<
Mi sembra di ricordare che non sei un pivello, quindi vorrai elaborare a tuo piacere questo spunto.

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

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Dylan666 » 06/10/10 07:04

Scusa se a distanza di così tanto tempo rispondo, ma volevo ringraziarti, la macro fa esattamento quello che volevo, anzi anche di più :D

In effetti nel mio caso il percorso di salvataggio è sempre lo stesso e quindi eviterò che appaia la finestra con la richiesta di specificare la directory. In realtà tale percorso cambia lievemente a seconda del foglio che vado a salvare: ipotizzando che ci siano solo 3 fogli ed essi si chiamino Pippo, Pluto e Paperino i tre percorsi potrebbero essere c:\a\pippo, c:\b\pluto e c:\paperino (<--- non è un errore di battitura, ci sono percorsi per alcuni fogli che non rispettano la gerarchia delle cartelle degli altri).

Avevo quindi provato a sostituire il "blocco (1)" del tuo codice con questo:

Codice: Seleziona tutto
Select Case ActiveSheet.Name = "Pippo"
    DDir = "c:\a\pippo\"
Case ActiveSheet.Name = "Pluto"
    DDir = "c:\b\pluto\"
Case ActiveSheet.Name = "Paperino"
    DDir = "c:\paperino\"
End Select
NewFName = DDir & FPrefix & ActiveSheet.Name & ".xls"


Manco a dirlo ovviamente non funziona :D :lol: Appare una finestra di errore con scritto "400"
Sapresti indicarmi cosa ho sbagliato?

Grazie delle indicazioni e ti prometto che questa volta sarò più veloce nel feedback :)
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Anthony47 » 06/10/10 23:21

Questo blocco dovrebbe essere piu' ortodosso:
Codice: Seleziona tutto
Select Case ActiveSheet.Name
    Case "Pippo"
        DDir = "c:\a\pippo\"
    Case "Pluto"
        DDir = "c:\b\pluto\"
    Case "Paperino"
        DDir = "c:\paperino\"
End Select

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

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Zoro76 » 07/10/10 13:17

Scusate l'intrusione. Avrei una domandina da porvi in riguardo a questa macro:

se per caso il foglio di chiama Pluto ma il nome di salvataggio deve SEMPRE essere Pippo...si può fare?
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Anthony47 » 07/10/10 23:01

Si, in liea di massima si puo' fare; bisogna pero' chiarire "che cosa" :D :D
Qui si parla di come salvare tanti fogli come file a se' stanti in directory diverse; tu invece ...non mi e' "chiarissimo".

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

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Zoro76 » 08/10/10 07:52

Il mio discorso è questo: ho un file excel con diversi fogli e ho la necessità di salvare solamente un foglio creando un file xls. Questo foglio ha la necessità, nel contesto in cui si trova, di avere un determinato nome (nel nostro caso Pluto) però nel momento in cui lo salvo il nome deve cambiare (ad es. Pippo) ( Pippo = costante).
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Zoro76 » 08/10/10 08:03

una curiosità: è necessario che la macro si trovi sul foglio in questione oppure si può mettere "da un'altra parte" e dire alla macro quale foglio foglio salvare?
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Dylan666 » 08/10/10 09:36

Anthony47 ha scritto:Questo blocco dovrebbe essere piu' ortodosso:
Codice: Seleziona tutto
Select Case ActiveSheet.Name
    Case "Pippo"
        DDir = "c:\a\pippo\"
    Case "Pluto"
        DDir = "c:\b\pluto\"
    Case "Paperino"
        DDir = "c:\paperino\"
End Select

Ciao


Grazie, avevo completamenta sbagliato la sintassi :P

Mentre aspettavo la tua risposta avevo risolto temporaneamente così:

Codice: Seleziona tutto
If (ActiveSheet.Name = "Pippo") Then
    DDir = "c:\a\pippo\"
ElseIf (ActiveSheet.Name = "Pluto") Then
 DDir = "c:\b\pluto\"
ElseIf (ActiveSheet.Name = "Paperino") Then
    DDir = "c:\paperino\"
End If


Più bruttino come codice ma funzioanva :D
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Anthony47 » 09/10/10 02:30

La tua sintassi era infatti da "if", non da "Select Case"...

Per Zoro76:
devi essere preciso:
ho la necessità di salvare solamente un foglio creando un file xls. Questo foglio ha la necessità, nel contesto in cui si trova, di avere un determinato nome (nel nostro caso Pluto) però nel momento in cui lo salvo il nome deve cambiare (ad es. Pippo) ( Pippo = costante)
Alludi al nome foglio che nel nuovo file deve cambiare in Pippo prima che si proceda al salvataggio, o al nome con cui salvi il file che deve essere sempre Pippo.xls indipendentemente dal nome del foglio contenuto?

è necessario che la macro si trovi sul foglio in questione oppure si può mettere "da un'altra parte" e dire alla macro quale foglio foglio salvare?
Le macro non sono nei fogli, ma nei file; le loro istruzioni possono far riferimento a qualsiasi file aperto, se esplicitamente indirizzato tramite "Workbooks("NomeFile.xls")", oppure al file attivo se indirizzato tramite "ActiveWorkbook" (o per default di indirizzamento), oppure al file che contiene la macro, se indirizzato tramite "ThisWorkbook".

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

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Zoro76 » 11/10/10 08:13

Hai ragione mi sono spiegato male: il nome del foglio resta lo stesso (Pluto nel file con tanti fogli e sempre Pluto anche nel file dove c'è solo questo foglio); mentre cambia il nome del file di salvataggio che deve essere sempre Pippo.

Le macro non sono nei fogli, ma nei file; le loro istruzioni possono far riferimento a qualsiasi file aperto, se esplicitamente indirizzato tramite "Workbooks("NomeFile.xls")", oppure al file attivo se indirizzato tramite "ActiveWorkbook" (o per default di indirizzamento), oppure al file che contiene la macro, se indirizzato tramite "ThisWorkbook".


Vediamo se ho capito bene: avendo la macro nel file io posso farla partire in ogni momento a prescindere dal foglio attivo. Posso associargli un tasto rapido (CTRL+SHIFT+S) e non cambia nulla; Ma nel momento in cui creo un tasto per farla partire allora funziona solo se quel tasto è sul foglio che voglio salvare...giusto o mi sono perso qualcosa?
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Anthony47 » 11/10/10 21:08

Vediamo se ho capito bene: avendo la macro nel file io posso farla partire in ogni momento a prescindere dal foglio attivo. Posso associargli un tasto rapido (CTRL+SHIFT+S) e non cambia nulla; Ma nel momento in cui creo un tasto per farla partire allora funziona solo se quel tasto è sul foglio che voglio salvare...giusto o mi sono perso qualcosa?
Si, Si, No.

Metti la macro in un file excel, gli associ un tasto di scelta rapida o un pulsante; quando premi il pulsante (e per questo dovrai essere sul foglio che contiene il pulsante) la macro potra' attivare il file che ti interessa, il foglio che ti interessa, poi ne fa una copia su un nuovo file, salva il nuovo file col nome pippo.xls, chiude il file attivo, end sub.
Tutta la macro e' ottenibile con un "Registra nuova macro".
Se hai qualche personalizzazione da fare allora posta il codice ottenuto con Registra macro e spiega che varianti ti interesserebbe apportare.

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

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Dylan666 » 13/10/10 09:20

Chiedo nuovamente aiuto: la macro va alla grande ma non avevo previsto un caso: se il file nella cartella già esiste Excel propone se sovrascriverlo o no e va benissimo. Se però alla finestra si risponde NO (cioè se NON si vuole sovrascrivere il file) la macro si ferma con un errore 400.

Come si fa a fare in modo che in caso di risposta "NO" il ciclo continui riprendendo dal foglio dopo senza fermarsi?

Grazie del prezioso aiuto
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Zoro76 » 13/10/10 15:02

Premetto che non sono esperto di macro e quindi ho provato, giusto per provare, ad adattare questa macro secondo le mie esigenze ma purtroppo mi sono inciampato :) :

io ho questa macro che salva il foglio corrente PIPPO nella directory in cui si trova con il nome del file PLUTO (il nome del foglio PIPPO resta uguale anche nel nuovo file) e fin qui tutto ok: dopodichè a me basta così però la macro continua con il foglio successivo e non sono riuscito a capire come interromperla dopo il primo foglio (me ne interessa soltanto 1). Quando poi vado ad aprire il nuovo file creato mi da errore nel file stesso dicendo che

"il formato del file che si sta cercando di aprire, "Pluto.xls", è diverso da quello specificato dall'estensione del file. Prima di aprire,verificare che non sia danneggiatoe che provenga da una fonte attendibile."

Sub SalvaFoglio()
'
FPrefix = "" 'Prefisso che sara' aggiunto al nome foglio per formare il nome file
'
DDir = ActiveWorkbook.Path
For i = 1 To ActiveWorkbook.Sheets.Count
If Sheets(i).Visible = False Then GoTo SkipSh
Sheets(i).Select
' (1)...
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = DDir '<<< Filtro per nome
.Title = "Scegli la directory per il foglio " & ActiveSheet.Name
.Show
If .SelectedItems.Count = 0 Then 'directory non scelta
MsgBox ("Scelta non effettuata, procedura abortita"): Exit Sub
End If
DDir = .SelectedItems(1) & "\"
End With
' (2)...
NewFName = DDir & FPrefix & "Pluto.xls"
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=NewFName
ActiveWorkbook.Close
SkipSh:
Next i
'
End Sub



Sapete dirmi come posso risolvere il problema?

Ciao
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Anthony47 » 13/10/10 21:44

Per dylan:
sostituisci il blocco 2 con questo:
Codice: Seleziona tutto
    ' (2)...
    NewFName = DDir & FPrefix & ActiveSheet.Name & ".xls"
    ActiveSheet.Copy
    On Error Resume Next
    ActiveWorkbook.SaveAs Filename:=NewFName
    If Err.Number <> 0 Then
    MbMess = "Foglio " & ActiveSheet.Name & " non salvato"
    If Err.Number <> 1004 Then MbMess = MbMess & vbCrLf & Err.Number & " - " & Err.Description
    MsgBox (MbMess)
    End If
    ActiveWorkbook.Close savechanges:=False
    ' (3)...

Se l' errore e' 1004 (questo e' quello che a me succede, non errore 400), la macro segnala solo "foglio non salvato", altrimenti indica anche il codice di errore e descrizione (in gergo Microsoft).

Per Zoro76:
La macro e' come un intercity da 12 carrozze che fa Milano-Roma, ma tu vuoi usarla per portare in gita scolastica i ragazzi della 3°C da Lodi a Casalpusterlengo...
Se registri una macro come ho suggerito nel messaggio precedente avrai un comodo pulman adatto allo scopo.

Se invece, come sembra dal tuo ultimo messaggio, l' esigenza e' solo didattica, allora:
-potresti modificare questa: For i = 1 To ActiveWorkbook.Sheets.Count in:
For i = 1 To 1
-meglio, potresti eliminare contemporaneamente le istruzioni
For i = 1 To ActiveWorkbook.Sheets.Count
Next i
e nelle istruzioni che usano l' indice "I" usare al suo posto il numero 1
Comunque se devi salvare nella stessa directory dove si trova il file di partenza, tutto il blocco da (1) a (2) e' inutile, e puo' essere eliminato in toto.

Per quanto riguarda l' errore, che versione di excel usi?

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

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Zoro76 » 14/10/10 10:55

Ho sotituito
For i = 1 To ActiveWorkbook.Sheets.Count con:

For i= 1 To 1

e adesso la macro fa quello che deve però l'errore quando apro il file c'è ancora.

Utilizzo Office 2007
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Anthony47 » 14/10/10 13:50

Se usi Xl2007 probabilmente devi salvare come .xlsx
Userai quindi
Codice: Seleziona tutto
NewFName = DDir & FPrefix & "Pluto.xlsx"  'oppure .xlsm

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

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Zoro76 » 14/10/10 14:46

Perfetto ho sistemato
grazie
Zoro76
Utente Senior
 
Post: 107
Iscritto il: 10/03/10 10:55

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Dylan666 » 14/12/10 15:21

Scusate se riesumo questo topic ma mi serve un piccolo consiglio sempre su questa questione...
Il VB sopra citato salva i fogli in determinate cartella e fin qui tutto ok. I fogli però contengono calcoli e pivot mentre io vorrei che venissero salvati nelle cartelle degli utentu solo i "dati" che sono nei foglio, senza i calcoli.
Come se uno facesse copia e incolla dei dati in un folgio vuoto insomma.

C'è un modo semplice per farlo?

Grazie in anticipo delle risposte
Avatar utente
Dylan666
Moderatore
 
Post: 39988
Iscritto il: 18/11/03 16:46

Re: [EXCEL] Salvare i singoli fogli in vari file e percorsi

Postdi Anthony47 » 15/12/10 22:45

La macro conteneva queste istruzioni
' (2)...
NewFName = DDir & FPrefix & ActiveSheet.Name & ".xls"
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=NewFName
ActiveWorkbook.Close
' (3)...
Se ho capito bene la richiesta:
1) registrati una macro mente
-sul foglio selezionato, selezioni le colonne (o le righe) che vuoi eliminare e fai Menu /Modifica /Elimina
-sul foglio selezionato seleziona tutte le celle, Copia, poi Modifica /Incolla speciale, Valori; selezioni A1
-fermi la registrazione
2) copi le istruzioni della nuova macro (eccetto Sub & End Sub) subito dopo ActiveSheet.Copy
della macro originale.

E se non e' questo quello che chiedevi allora posta ancora con qualche informazione in piu'.

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

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Salvare i singoli fogli in vari file e percorsi":


Chi c’è in linea

Visitano il forum: Gianca532011 e 87 ospiti