| | 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)
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!
[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 )
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 | |
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 | |
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!!
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 |
|
|