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

Macro "spacchetta" fogli di lavoro

Ultimo Aggiornamento: 02/09/2015 11:05
Post: 1
Registrato il: 30/04/2005
Città: ACCIANO
Età: 31
Utente Junior
Excel97
OFFLINE
31/08/2015 18:11

Ciao ragazzi,
vi ringrazio perché spesso siete fonte di "ispirazione" nell'utilizzo delle macro.
Ho un problema relativamente semplice ma dal quale non riesco a venirne a capo e per il quale ho trovato spunto per la soluzione proprio qui; qualcuno riuscirebbe a darmi una dritta?

Il file sul quale lavoro ha n fogli di lavoro, ciascuno dei quali contiene dei cerca.vert e si chiama Nome+Cognome di una lista utenti. Fondamentalmente devo fare una macro per spacchettare questi N fogli in N file chiamati con il nome+cognome.

La mia macro deve quindi:

1) creare una copia del foglio di lavoro in un nuovo file (nessun problema)
2) selezionare tutto il foglio di lavoro, fare copia/incolla valori per fissare il risultato del cerca.vert. Dopo di che cerca/sostituisci #N/D con "". (nessun problema)
3) Salvare con nome il file con il nome e cognome dell'utente (c'è una cella che presenta questa informazione).
4) far sì che la macro sia lanciabile con successo in ogni foglio di lavoro. Quando ho provato a farlo in autonomia (la macro di per sè è molto semplice) mi "spacchettava" sempre lo stesso foglio.

Ho visto che in questo topic
http://freeforumzone.leonardo.it/discussione.aspx?idd=8859785

avete già risposto al mio punto 3) [SM=x423017]

e navigando in internet ho teoricamente risolto anche il punto 4)

inserendo il comando

Dim s As String
s = ActiveSheet.Name
Application.CutCopyMode = False
Sheets(s).Name = s
Sheets(s).Select
Sheets(s).Copy


Il mio problema è che non avendo competenze in VBA... non riesco a scrivere correttamente la macro in modo che faccia le due istruzioni contemporaneamente ^^.
Nel senso che come un piccolo chirurgo ho unito due istruzioni ma ovviamente non capendo bene quello che scrivo, la macro non funziona come vorrei.

Vi ringrazio in anticipo per l'attenzione!
[SM=x423017]
[Modificato da BungoOverHillOfNoBottle 31/08/2015 18:14]
Post: 940
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Senior
Excel 365
OFFLINE
31/08/2015 18:55

Ciao Bungo (ma che razza di nick ti sei scelto [SM=g27828] )

Non è chiaro quali sono le operazioni che non riesci a fare?

Attualmente sono in ferie e non ho il pc ma se alleghi un file di esempio (senza dati sensibili) e spieghi bene il risultato che vuoi ottenere sicuramente qualcuno ti aiuterà.

Alfredo
Post: 1
Registrato il: 30/04/2005
Città: ACCIANO
Età: 31
Utente Junior
Excel97
OFFLINE
31/08/2015 21:44

Ciao Alfredo, grazie innanzitutto per l'interessamento. Il nome utente è il mio nome in Hobbit; nerd si nasce, non si diventa ;-)

In allegato c'è il file.

E' un file per gestire il personale di una sagra di paese. L'utente da database google form ha la disponibilità dei partecipanti ed in base alla mansione che viene assegnata il cerca.vert restituisce "nome cognome" nella cella in cui il partecipante presterà servizio.
Come vedi sono diversi nomi (e ci sono diversi file, quello che ti allego ha solo gli utenti con cognome dalla a alla b).
L'obiettivo della macro è quella di inviare a ciascun partecipante il suo "file di riepilogo". Quindi "acquaviva beatrice" deve ricevere solo il suo file, non quello di tutti gli altri.
Ho bisogno di un modo rapido per "spacchettare" ogni file di conferma, senza fare a manona "copia foglio excel" ecc
La macro in questione deve quindi "estrarre" in un nuovo file una copia del foglio di lavoro in cui la macro viene lanciata, copiare/incollare i valori e salvare questo singolo file con il nome del destinatario.

Ieri avevo scritto questa ma ha i problemi che ti coloro in rosso

Sub Macro5()
'
' Macro5 Macro
' Macro registrata il 30/08/2015 da Marina e Mauro
'

'
Sheets("Acquaviva Beatrice").Select
Sheets("Acquaviva Beatrice").Name = "Acquaviva Beatrice"
Sheets("Acquaviva Beatrice").Select
Sheets("Acquaviva Beatrice").Copy

Range("B2:L2").Select
ActiveCell.FormulaR1C1 = "Acquaviva Beatrice"
With ActiveCell.Characters(Start:=1, Length:=18).Font
.Name = "Engravers MT"
.FontStyle = "Grassetto"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Selection.Replace What:="#N/D", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Range("B2:L2").Select
ActiveCell.FormulaR1C1 = "Acquaviva Beatrice"
With ActiveCell.Characters(Start:=1, Length:=18).Font
.Name = "Engravers MT"
.FontStyle = "Grassetto"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
Range("B3:L3").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Marina e Mauro\Desktop\Conferme\Definitive\Acquaviva Beatrice.xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

La mia macro praticamente esegue sempre e solo l'informazione per Acquaviva Beatrice: se lancio la macro nel foglio "Ajolfi Paolo" mi restituisce sempre l'informazione per Acquaviva Beatrice e salva un file chiamato Acquaviva Beatrice.

Spero di essere stato sufficientemente chiaro, nel caso fammi pure ulteriori domande! Grazie ancora per l'interessamento!
________________________________________________


Campione Fantacalcio 2005/2006 - 2007/2008 - 2012/2013
"Il Real Cicogna è una Repubblica Democratica fondata sul 4-5-1"
Post: 57
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Junior
Excel2019
OFFLINE
01/09/2015 06:39

Buongiorno
Ti posto (con le mie scuse ad Alfredo) la tua macro corretta. In effetti la tua macro è corretta ma non dinamica. Assegnala ad un pulsante nel Foglio "NomeFoglio". In questo foglio però devi prima aggiungere una "convalida dati" riferita al tuo elenco in A2:A270 (io l'ho inserito nella cella G10. Quindi selezioni il nome che vuoi e lanci la macro qui sotto
Sub Macro5()
'
' Macro5 Macro
' Macro registrata il 30/08/2015 da Marina e Mauro
'

'
'Sheets("Acquaviva Beatrice").Select
'Sheets("Acquaviva Beatrice").Name = "Acquaviva Beatrice"
'Sheets("Acquaviva Beatrice").Select
'Sheets("Acquaviva Beatrice").Copy

nome = Range("G10").Text
Sheets(nome).Select         'assume il nome selezionato


Range("B2:L2").Select
'ActiveCell.FormulaR1C1 = "Acquaviva Beatrice"
ActiveCell.FormulaR1C1 = nome       '<=== sostituisce il precedente
With ActiveCell.Characters(Start:=1, Length:=18).Font
.Name = "Engravers MT"
.FontStyle = "Grassetto"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Selection.Replace What:="#N/D", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Range("B2:L2").Select
'ActiveCell.FormulaR1C1 = "Acquaviva Beatrice"
ActiveCell.FormulaR1C1 = nome       '<=== sostituisce il precedente
With ActiveCell.Characters(Start:=1, Length:=18).Font
.Name = "Engravers MT"
.FontStyle = "Grassetto"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
'Range("B3:L3").Select
'la riga seguente salva il foglio ==> nome
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Marina e Mauro\Desktop\Conferme\Definitive\" & nome & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
'ActiveWorkbook.SaveAs Filename:= _
'"C:\Documents and Settings\Marina e Mauro\Desktop\Conferme\Definitive\Acquaviva Beatrice.xls" _
', FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
'ReadOnlyRecommended:=False, CreateBackup:=False
End Sub



Ho messo un apostrofo nelle righe che non servono
Prova e fammi sapere.
Ciao,
Mario
Post: 942
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Senior
Excel 365
OFFLINE
01/09/2015 09:43

Mario ma di cosa devi scusarti?

Questa è un' "agorà" aperta a tutti e da te c'è solo da imparare.

Alfredo
Post: 54
Registrato il: 10/04/2014
Città: TORINO
Età: 60
Utente Junior
2010
OFFLINE
01/09/2015 13:47

Buongiorno a tutti

forse sbaglio qualcosa ma mi sembra che la sub copi tutto il file e non solo il file di riferimento

eventualmente si può usare

Sub salvafogli()
Dim n As Long
Dim mynome As String
Dim mypath As String

mypath = "c:\archivio"
With ActiveWorkbook
For n = 2 To .Sheets.Count
mynome = .Sheets(n).Name
.Sheets(n).Copy
ActiveWorkbook.SaveAs Filename:=mypath & mynome
'ActiveWorkbook.Close
Next n
End With
MsgBox "sono stati creati " & n - 1 & " files"

End Sub



premesso che prima bisogna fare il copia incolla di tutti i valori dei figli


Sub Macro2()
'
' Macro2 Macro
'

'
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets(Array("Acquaviva Beatrice", "Ajolfi Dario", "Ajolfi Paolo", _
"Ajolfi vinicio", "Albertazzi Marina", "Alessandro Bonetti", "Alfonsi Alice", _
"Altamura Sara", "Altena Elisabetta", "Amato Riccardo", "Amato Roberto", _
"Amorati Riccardo", "Argenzio Pina", "Arioldi Tiziana", "Armati Stefania", _
"Avoni Corinne", "Bacchi Thomas", "Baietti Paola", "Balassini Miriam", _
"Balboni Fabio", "Balducci Barbara", "Ballarini Elisabetta", "Balò Fabiana", _
"Baruzzi Matteo", "Battacchi Raffaella")).Select
Sheets("Acquaviva Beatrice").Activate
Sheets(Array("Battaglia Ornella", "Bechis Pier", "Beghelli Sergio", _
"Beghelli Vale", "Bella Elisabetta", "Bernabe Daniela", "Biagini Giovanni", _
"Bianca Rimondini", "Bigazzi Riccardo", "Bini Carla", "Bisato Francesco", _
"Bissani Lucia", "Bitelli Francesca", "Bombarda Ilaria", "Bontempi Maria")). _
Select Replace:=False
Sheets(Array("Acquaviva Beatrice", "Ajolfi Dario", "Ajolfi Paolo", _
"Ajolfi vinicio", "Albertazzi Marina", "Alessandro Bonetti", "Alfonsi Alice", _
"Altamura Sara", "Altena Elisabetta", "Amato Riccardo", "Amato Roberto", _
"Amorati Riccardo", "Argenzio Pina", "Arioldi Tiziana", "Armati Stefania", _
"Avoni Corinne", "Bacchi Thomas", "Baietti Paola", "Balassini Miriam", _
"Balboni Fabio", "Balducci Barbara", "Ballarini Elisabetta", "Balò Fabiana", _
"Baruzzi Matteo", "Bontempi Maria")).Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets(Array("Acquaviva Beatrice", "Ajolfi Dario", "Ajolfi Paolo", _
"Ajolfi vinicio", "Albertazzi Marina", "Alessandro Bonetti", "Alfonsi Alice", _
"Altamura Sara", "Altena Elisabetta", "Amato Riccardo", "Amato Roberto", _
"Amorati Riccardo", "Argenzio Pina", "Arioldi Tiziana", "Armati Stefania", _
"Avoni Corinne", "Bacchi Thomas", "Baietti Paola", "Balassini Miriam", _
"Balboni Fabio", "Balducci Barbara", "Ballarini Elisabetta", "Balò Fabiana", _
"Baruzzi Matteo", "Battacchi Raffaella")).Select
Sheets("Acquaviva Beatrice").Activate
Sheets(Array("Battaglia Ornella", "Bechis Pier", "Beghelli Sergio", _
"Beghelli Vale", "Bella Elisabetta", "Bernabe Daniela", "Biagini Giovanni", _
"Bianca Rimondini", "Bigazzi Riccardo", "Bini Carla", "Bisato Francesco", _
"Bissani Lucia", "Bitelli Francesca", "Bombarda Ilaria", "Bontempi Maria")). _
Select Replace:=False
End Sub



modificati questa sub e poi lancia la prima vedrai che ti genera effettivamente un file per ogni foglio

Ciao
Post: 55
Registrato il: 10/04/2014
Città: TORINO
Età: 60
Utente Junior
2010
OFFLINE
01/09/2015 13:48

Cerco di trovare il modo fi fare il copia incolla di tutti i fogli

ci scriviamo più tardi o se tu sai come fare posta pure la soluzione

ciao
[Modificato da mb63 01/09/2015 13:53]
Post: 2
Registrato il: 30/04/2005
Città: ACCIANO
Età: 31
Utente Junior
Excel97
OFFLINE
01/09/2015 13:55

Ciao,
grazie a tutti. Ora sono al lavoro e appena torno a casa provo le vostre soluzioni.

Solo una specifica che trovo doverosa visti gli ultimi commenti.

La macro deve "spacchettare" un foglio per volta, non tutti i fogli contemporaneamente!
L'utente decide quale foglio di lavoro estrarre e lancia la macro

grazie mille davvero!
________________________________________________


Campione Fantacalcio 2005/2006 - 2007/2008 - 2012/2013
"Il Real Cicogna è una Repubblica Democratica fondata sul 4-5-1"
Post: 3
Registrato il: 30/04/2005
Città: ACCIANO
Età: 31
Utente Junior
Excel97
OFFLINE
01/09/2015 14:04

Re:
Marius44, 01/09/2015 06:39:

Buongiorno
Ti posto (con le mie scuse ad Alfredo) la tua macro corretta. In effetti la tua macro è corretta ma non dinamica. Assegnala ad un pulsante nel Foglio "NomeFoglio". In questo foglio però devi prima aggiungere una "convalida dati" riferita al tuo elenco in A2:A270 (io l'ho inserito nella cella G10. Quindi selezioni il nome che vuoi e lanci la macro qui sotto
Sub Macro5()
'
' Macro5 Macro
' Macro registrata il 30/08/2015 da Marina e Mauro
'

'
'Sheets("Acquaviva Beatrice").Select
'Sheets("Acquaviva Beatrice").Name = "Acquaviva Beatrice"
'Sheets("Acquaviva Beatrice").Select
'Sheets("Acquaviva Beatrice").Copy

nome = Range("G10").Text
Sheets(nome).Select         'assume il nome selezionato


Range("B2:L2").Select
'ActiveCell.FormulaR1C1 = "Acquaviva Beatrice"
ActiveCell.FormulaR1C1 = nome       '<=== sostituisce il precedente
With ActiveCell.Characters(Start:=1, Length:=18).Font
.Name = "Engravers MT"
.FontStyle = "Grassetto"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Selection.Replace What:="#N/D", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Range("B2:L2").Select
'ActiveCell.FormulaR1C1 = "Acquaviva Beatrice"
ActiveCell.FormulaR1C1 = nome       '<=== sostituisce il precedente
With ActiveCell.Characters(Start:=1, Length:=18).Font
.Name = "Engravers MT"
.FontStyle = "Grassetto"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
'Range("B3:L3").Select
'la riga seguente salva il foglio ==> nome
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Marina e Mauro\Desktop\Conferme\Definitive\" & nome & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
'ActiveWorkbook.SaveAs Filename:= _
'"C:\Documents and Settings\Marina e Mauro\Desktop\Conferme\Definitive\Acquaviva Beatrice.xls" _
', FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
'ReadOnlyRecommended:=False, CreateBackup:=False
End Sub



Ho messo un apostrofo nelle righe che non servono
Prova e fammi sapere.
Ciao,
Mario



Ciao Marius, questa mi sovrascrive il file originale e non "scorpora" il foglio. In poche parole se il file si chiama "prova" al termine della macro si chiama "ProvaAcquaviva Beatrice"
________________________________________________


Campione Fantacalcio 2005/2006 - 2007/2008 - 2012/2013
"Il Real Cicogna è una Repubblica Democratica fondata sul 4-5-1"
Post: 4
Registrato il: 30/04/2005
Città: ACCIANO
Età: 31
Utente Junior
Excel97
OFFLINE
01/09/2015 14:06

Re:
mb63, 01/09/2015 13:47:

Buongiorno a tutti

forse sbaglio qualcosa ma mi sembra che la sub copi tutto il file e non solo il file di riferimento

eventualmente si può usare

Sub salvafogli()
Dim n As Long
Dim mynome As String
Dim mypath As String

mypath = "c:\archivio"
With ActiveWorkbook
For n = 2 To .Sheets.Count
mynome = .Sheets(n).Name
.Sheets(n).Copy
ActiveWorkbook.SaveAs Filename:=mypath & mynome
'ActiveWorkbook.Close
Next n
End With
MsgBox "sono stati creati " & n - 1 & " files"

End Sub



premesso che prima bisogna fare il copia incolla di tutti i valori dei figli


Sub Macro2()
'
' Macro2 Macro
'

'
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets(Array("Acquaviva Beatrice", "Ajolfi Dario", "Ajolfi Paolo", _
"Ajolfi vinicio", "Albertazzi Marina", "Alessandro Bonetti", "Alfonsi Alice", _
"Altamura Sara", "Altena Elisabetta", "Amato Riccardo", "Amato Roberto", _
"Amorati Riccardo", "Argenzio Pina", "Arioldi Tiziana", "Armati Stefania", _
"Avoni Corinne", "Bacchi Thomas", "Baietti Paola", "Balassini Miriam", _
"Balboni Fabio", "Balducci Barbara", "Ballarini Elisabetta", "Balò Fabiana", _
"Baruzzi Matteo", "Battacchi Raffaella")).Select
Sheets("Acquaviva Beatrice").Activate
Sheets(Array("Battaglia Ornella", "Bechis Pier", "Beghelli Sergio", _
"Beghelli Vale", "Bella Elisabetta", "Bernabe Daniela", "Biagini Giovanni", _
"Bianca Rimondini", "Bigazzi Riccardo", "Bini Carla", "Bisato Francesco", _
"Bissani Lucia", "Bitelli Francesca", "Bombarda Ilaria", "Bontempi Maria")). _
Select Replace:=False
Sheets(Array("Acquaviva Beatrice", "Ajolfi Dario", "Ajolfi Paolo", _
"Ajolfi vinicio", "Albertazzi Marina", "Alessandro Bonetti", "Alfonsi Alice", _
"Altamura Sara", "Altena Elisabetta", "Amato Riccardo", "Amato Roberto", _
"Amorati Riccardo", "Argenzio Pina", "Arioldi Tiziana", "Armati Stefania", _
"Avoni Corinne", "Bacchi Thomas", "Baietti Paola", "Balassini Miriam", _
"Balboni Fabio", "Balducci Barbara", "Ballarini Elisabetta", "Balò Fabiana", _
"Baruzzi Matteo", "Bontempi Maria")).Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets(Array("Acquaviva Beatrice", "Ajolfi Dario", "Ajolfi Paolo", _
"Ajolfi vinicio", "Albertazzi Marina", "Alessandro Bonetti", "Alfonsi Alice", _
"Altamura Sara", "Altena Elisabetta", "Amato Riccardo", "Amato Roberto", _
"Amorati Riccardo", "Argenzio Pina", "Arioldi Tiziana", "Armati Stefania", _
"Avoni Corinne", "Bacchi Thomas", "Baietti Paola", "Balassini Miriam", _
"Balboni Fabio", "Balducci Barbara", "Ballarini Elisabetta", "Balò Fabiana", _
"Baruzzi Matteo", "Battacchi Raffaella")).Select
Sheets("Acquaviva Beatrice").Activate
Sheets(Array("Battaglia Ornella", "Bechis Pier", "Beghelli Sergio", _
"Beghelli Vale", "Bella Elisabetta", "Bernabe Daniela", "Biagini Giovanni", _
"Bianca Rimondini", "Bigazzi Riccardo", "Bini Carla", "Bisato Francesco", _
"Bissani Lucia", "Bitelli Francesca", "Bombarda Ilaria", "Bontempi Maria")). _
Select Replace:=False
End Sub



modificati questa sub e poi lancia la prima vedrai che ti genera effettivamente un file per ogni foglio

Ciao



ciao Mb, grazie mille, questa si avvicina molto, solo che le fa tutte contemporaneamente! come faccio a farla girare solo per il foglio corrente?

Grazie

________________________________________________


Campione Fantacalcio 2005/2006 - 2007/2008 - 2012/2013
"Il Real Cicogna è una Repubblica Democratica fondata sul 4-5-1"
Post: 56
Registrato il: 10/04/2014
Città: TORINO
Età: 60
Utente Junior
2010
OFFLINE
01/09/2015 14:44

Ciao mi spiace non esserti stato d'aiuto, ma innanzi tutto penso sia necessario prima correggere ancora l'impostazione per salvare solo i dati e non tutti i fogli come nel file precedente

aspettiamo nuovi lumi dagli esperti

buon pomeriggio
Post: 58
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Junior
Excel2019
OFFLINE
01/09/2015 15:19

Ciao.
Guarda che ho solo "corretto" la TUA macro per pescare il foglio che vuoi, e non solo il primo, se hai seguito quanto t'ho detto.
La tua macro non aveva nulla per "spacchettare" ma era "bloccata" sul nome Acquaviva Beatrice.
Per fare quello che credo di aver capito devi "creare" una Cartella nuova per ogni nome dell'elenco e nel primo foglio (della cartella) incollare il Foglio copiato.

Se ho azzeccato, fammi un cenno e vedremo cosa si può fare.
Ciao,
Mario
Post: 5
Registrato il: 30/04/2005
Città: ACCIANO
Età: 31
Utente Junior
Excel97
OFFLINE
01/09/2015 17:08

Riciao a tutti!
ho fatto un po' di edit dalle vostre soluzioni e sono arrivato quasi alla meta!! ho solo due difficoltà residue:
1) quando chiedo alla macro di cercare e sostituire #N/D con "" non esegue l'istruzione (cioè mi lascia gli #N/D)

2) anche se ho dato una directory precisa dove salvare il foglio, me lo salva nella cartella "nativa" in cui ho aperto il file originale. Questo è un non problema, nel senso che posso aprire il file nella cartella di destinazione finale solo non riesco a capire dove excel non capisce l'istruzione che gli sto (state ^^') dando

questo è il codice


GRAZIE MILLE A TUTTI!! [SM=x423017] [SM=x423017] [SM=x423017]



Sub salvafogli()
Dim n As Long
Dim mynome As String
Dim mypath As String

mypath = "C:\Users\severom\Desktop\Prova"
With ActiveWorkbook
mynome = ActiveSheet.Name
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=mynome
'ActiveWorkbook.Close
End With
Range("A1:M28").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Replace What:="#N/D", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
MsgBox "e' stato creato il file definitivo"
End Sub

________________________________________________


Campione Fantacalcio 2005/2006 - 2007/2008 - 2012/2013
"Il Real Cicogna è una Repubblica Democratica fondata sul 4-5-1"
Post: 97
Registrato il: 02/08/2015
Utente Junior
Excel 2013
OFFLINE
01/09/2015 19:29

Ciao a tutti,

per il punto (1):
prova ad aggiungere "\" alla fine di "mypath", quindi diventerebbe:

mypath = "C:\Users\severom\Desktop\Prova\"


mentre questa riga
ActiveWorkbook.SaveAs Filename:=mynome

cambiala in:

ActiveWorkbook.SaveAs Filename:=mypath & mynome & ".xls"


Per il punto (2):
"#N/D" non è una stringa o un valore, ma un errore...

Per eliminarlo, prendi quello che ti serve da questa piccola macro e adattala al tuo codice:

Sub prova()
Dim campo As Range, cella As Range
Set campo = Range("A3:F10")
    For Each cella In campo
        If TypeName(cella.Value) = "Error" Then
            cella.Value = ""
        End If
    Next
End Sub
[Modificato da cromagno 01/09/2015 19:31]


"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Post: 61
Registrato il: 10/04/2014
Città: TORINO
Età: 60
Utente Junior
2010
OFFLINE
02/09/2015 11:05

Ciao a tutti

io ho aggiunto ancora una modifica per evitare che il file finale rimanesse ancora nella fase copia.

ho aggiunto prima di end sub


Application.CutCopyMode = False



grazie
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 15:28. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com