Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Salva solo foglio attivo con percorso e nome

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

Re: Salva solo foglio attivo con percorso e nome

Postdi Anthony47 » 19/11/13 23:29

Se una cella con cui vuoi comporre il nome file contiene una vera data (data in formato excel), allora modificherai l' istruzione con cui calcoli il nome file; non myFile = myDir & "\" & Range("a1").Value & Range("b1").Value & ".xlsx" MA
Codice: Seleziona tutto
myFile = myDir & "\" & format(Range("a1").Value,"yyyy-mm_") & Range("b1").Value & ".xlsx"

Ho ipotizzato che A1 contiene una data e B1 un testo; se il contenuto di B1 non ti interessa, elimina la componente "& Range("b1").Value"

Infine una nota semantica:
questa è la formula che Anthony ha elaborato per me

Questa e' una "macro" non una "formula".

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: Salva solo foglio attivo con percorso e nome

Postdi angelo72 » 20/11/13 09:58

Buongiorno a tutti...
Grazie Anthony..... funziona benissimo...
Avrei bisogno di un'altro aiuto e ho notato una cosa. Poichè nel foglio di lavoro ho dovuto integrare alcune cose, mi servirebbe salvare
un intervallo diverso di A1:N2721 .
Ti spiego: per una questione gestionale, di fianco agli ordini di servizio mi sono costruito il report del mese per ciascun dipendente.
Quindi quando cambio da A1:N2721 in i10:N2721 mi da errore nel codice VBA. Poichè i report devono essere salvati in un'altra
directory, sono costretto a salvare l'intero range da A1:N2721..
E' possibile salvare un intervallo che vada da un range i10:N2721?
Grazie......
angelo72
Utente Junior
 
Post: 70
Iscritto il: 28/10/13 17:04

Re: Salva solo foglio attivo con percorso e nome

Postdi Anthony47 » 21/11/13 02:02

Se devi salvare intervalli diversi, magari in directory diverse, allora il mio suggerimento e' che inserisci piu' macro con titolo diversi e parametri diversi. Poi eseguirai l' una o l' altra a seconda dell' esigenza.

Quanto all' errore, spiega quale tipo di errore e su quale riga e vedremo da cosa puo' dipendere.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva solo foglio attivo con percorso e nome

Postdi angelo72 » 21/11/13 09:43

Buongiorno a tutto il forum...
Grazie Anthony.
L'errore del VBA e: Errore Run-Time 9
indice non incluso nell'intervallo.
Poi seleziono Debug e si colora di giallo la seguente riga:
ActiveWorkbook.SaveAs Filename:=myFile, _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:=""
Ciao
angelo72
Utente Junior
 
Post: 70
Iscritto il: 28/10/13 17:04

Re: Salva solo foglio attivo con percorso e nome

Postdi Anthony47 » 22/11/13 00:42

Per prova metti prima della riga che ti va in errore le seguenti istruzioni:
Codice: Seleziona tutto
msgbox(ActiveWorkbook.Name)
msgbox(myFile)

Poi esegui la macro, prendi nota dei due messaggi che ti presentera' e riportali nel tuo prossimo messaggio, con la conferma che la macro ha ridato l' errore nell' istruzione successiva (ActiveWorkbook.SaveAs ...)

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva solo foglio attivo con percorso e nome

Postdi angelo72 » 22/11/13 18:21

Ciao Anthony.... Ho fatto come tu hai detto....Quando pigio la macro dopo aver inserito il tuo codice, si apre un nuovo file Escel con una maschera chiamato Catel5.
Premo Ok e mi da un'altra maschera in questo modo: C:\users\camel\desktop\programmi_turni\report\.xlsx
Ripremo OK , compare un'altra maschera dell'errore in VBA. Errore di run-time 1004 Metodo SaveAs dell'oggetto_workbook non riuscito.
Premo Debug ed è evidenziato di giallo la seguente riga:
ActiveWorkbook.SaveAs Filename:=myFile, _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:=""

Metti qui l'intero codice in modo da essere più chiaro.
Sub Pulsante5_Click()
Dim mySorg As String, myRange As String, myDir As String, myFile As String
'
'>>> PARAMETRI:
mySorg = "servizio_mensile" '<< Il foglio da copiare
myRange = "i10:N2721" '<< L'area da copiare
myDir = "C:\users\camel\desktop\programma_turni\report" '<< La directory di salvataggio
'
Sheets(mySorg).Select
Workbooks.Add
ThisWorkbook.Sheets(mySorg).Range(myRange).Copy Destination:=Range(myRange).Cells(1, 1)
myFile = myDir & "\" & Format(Range("b3").Value, "yyyy-mm_") & Range("a3").Value & ".xlsx"
'myFile = myDir & "\" & Range("A1").Value & Range("b1").Value & ".xlsx"
MsgBox (ActiveWorkbook.Name)
MsgBox (myFile)
ActiveWorkbook.SaveAs Filename:=myFile, _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:=""
ActiveWorkbook.Close
MsgBox ("Salvato file in: " & myFile & vbCrLf & "nella directory " & myDir) & ("Salvato con successo ")

End Sub
Ciao
angelo72
Utente Junior
 
Post: 70
Iscritto il: 28/10/13 17:04

Re: Salva solo foglio attivo con percorso e nome

Postdi Flash30005 » 23/11/13 04:28

Ho seguito solo gli ultimi post ma mi sembra che copiando un nuovo range non hai più i riferimenti dell'anno etc etc
Sei sicuro che in B3 del nuovo file tu abbia una data? e in A3 una seconda stringa che comporrà il nome del file?

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Salva solo foglio attivo con percorso e nome

Postdi Anthony47 » 23/11/13 17:29

Il primo messaggio dice che il file corrente si chiama "Catel5"
Il secondo dice che stai cercando di salvare il file col nome C:\users\camel\desktop\programmi_turni\report\.xlsx, cioe' senza aver compilato il nome file, che e' vietato.

Poiche' myFile = myDir & "\" & Format(Range("b3").Value, "yyyy-mm_") & Range("a3").Value & ".xlsx", e' evidente che le celle B3 e A3 del foglio attivo sono vuote; cosa che sarebbe contrario all' idea di voler salvare il file sulla base del contenuto di quelle due celle.
Tuttavia potrebbe esserci un equivoco... Le celle B3 e A3 sono quelle del foglio attivo, cioe' sul nuovo file e dopo aver copiato da A1 in avanti il range I10:N2721 del file di partenza; e' evidente quindi che in B3 e A3 ci sobo finiti i contenuti delle celle J12 e I11...
Se vuoi calcolare il nome del nuovo file sulla base del contenuto del file /foglio originale allora modificherai il calcolo di myFile in:
Codice: Seleziona tutto
With Thisworkbook.Sheets(mySorg)
   If (Format(.Range("b3").Value, "yyyy-mm_") & .Range("a3").Value) = "" then Exit sub
   myFile = myDir & "\" & Format(.Range("b3").Value, "yyyy-mm_") & .Range("a3").Value & ".xlsx"
End With
Questo in sostituzione della riga
myFile = myDir & "\" & Format(Range("b3").Value, "yyyy-mm_") & Range("a3").Value & ".xlsx"

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva solo foglio attivo con percorso e nome

Postdi angelo72 » 24/11/13 07:27

Buongiorno a tutto il Forum...
X Anthony... Ho inserito il codice come tu mi hai detto. Ti riporto qui l'intera formula da poter visionare caso mai io abbia fatto qualche sbaglio.

Sub Pulsante5_Click()
Dim mySorg As String, myRange As String, myDir As String, myFile As String
'
'>>> PARAMETRI:
mySorg = "servizio_mensile" '<< Il foglio da copiare
myRange = "I10:N2721" '<< L'area da copiare
myDir = "C:\users\camel\desktop\programma_turni\report" '<< La directory di salvataggio
'
Sheets(mySorg).Select
Workbooks.Add
ThisWorkbook.Sheets(mySorg).Range(myRange).Copy Destination:=Range(myRange).Cells(1, 1)
'
With ThisWorkbook.Sheets(mySorg)
If (Format(.Range("A3").Value, "yyyy-mm_") & .Range("B3").Value) = "" Then Exit Sub
myFile = myDir & "\" & Format(.Range("b3").Value, "yyyy-mm_") & .Range("a3").Value & ".xlsx"
End With



'
'myFile = myDir & "\" & Format(Range("b3").Value, "yyyy-mm_") & Range("a3").Value & ".xlsx" 'questo lo disattivato
'myFile = myDir & "\" & Range("A1").Value & Range("b1").Value & ".xlsx" ' questo lo disattivato
MsgBox (ActiveWorkbook.Name)
MsgBox (myFile)
ActiveWorkbook.SaveAs Filename:=myFile, _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:=""
ActiveWorkbook.Close
MsgBox ("Salvato file in: " & myFile & vbCrLf & "nella directory " & myDir) & (" Salvato ")

End Sub

Ti spiego cosa succede dividendoli in passaggi.
1- Quando pigio il tasto salva, mi esce una prima schermata dove mi dice: Cartel4, Premi OK.... Pigio Ok
2- Mi esce una seconda schermata dove mi specifica il percorso in cui Salvare il File.... ' Anche se giusto non necessario visto che lo specifca più avanti" Pigio ancora OK
3- - Mi esce una nuova schermata e dice: Salvato file in:C:\users\camel\desktop\programma_turni\report\2013-10_mese.xlsx. 'Questo ci può stare"
Pigio OK e vado a vedere nella cartella sopra specificata e finelmente trovo il file Salvato, chiamato: 2013-10_mese.xlsx
L'unica cosa se fosse possibile eliminare il primo e secondo passaggio.
Inoltre, poichè abbiamo specificato un'intervallo da i10:n2721, il nuovo file salvato inizia dalla cella i10, lasciandomi dalla cella A1 fino alla i10, tutte le celle vuote.
Ti chiedo se fosse possibile che il File salvato inizi dalla cella es. a2 . ad evidenziare i risultati e non dalla i10.
Se ciò non è possibile nel salvataggio indicarli l'intervallo, può andare anche così....
Grazie.....
angelo72
Utente Junior
 
Post: 70
Iscritto il: 28/10/13 17:04

Re: Salva solo foglio attivo con percorso e nome

Postdi Anthony47 » 24/11/13 13:44

Elimina i due Msgbox che ti avevo fatto mettere solo per prova (vedi posting.php?mode=reply&f=26&t=100467#pr580887)

Per quanto scrivere in A1, prova a modificare da ThisWorkbook.Sheets(mySorg).Range(myRange).Copy Destination:=Range(myRange).Cells(1, 1) a ThisWorkbook.Sheets(mySorg).Range(myRange).Copy Destination:=Cells(1, 1)

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva solo foglio attivo con percorso e nome

Postdi angelo72 » 24/11/13 18:22

Grazie Anthony... Problema Risolto..... Anche se siamo su un Forum, ti chiedo scusa per il troppo tempo a te sottratto per il mio problema. Magari il mio tempo poteva essere dedicato a atri. Cmq come avrai potuto notare non sono molto pratico nell'uso di Excel. Spero di poter imparare sempre di più qualcosa di nuovo.
Grazie mille.....
angelo72
Utente Junior
 
Post: 70
Iscritto il: 28/10/13 17:04

Re: Salva solo foglio attivo con percorso e nome

Postdi Anthony47 » 25/11/13 01:00

:) :)
Alla prossima...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13894
Iscritto il: 21/03/06 16:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Salva solo foglio attivo con percorso e nome":


Chi c’è in linea

Visitano il forum: wallace&gromit e 26 ospiti