Salva un intervallo specifico
Hai un problema con Excel? 
Salva un intervallo specifico
di angy (utente non iscritto) data: 19/11/2013 13:06:10
Buongiorno a tutti.... Avrei bisogno di un piccolo aiuto.
Io uso questa formula sotto riportata per salvarmi un foglio in un determinato intervallo.
Alla riga 6 della formula è riportato: myRange = "A1:N2721" '<< L'area da copiare
Il problema dov'è, che se specifico l'intervallo anzicchè A1:n2721 faccio i10:2721, mi da l'errore VBA.
Come posso risolvere questo problema?
Grazie a tutti
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 = "A1:N2721" '<< L'area da copiare
myDir = "C:userscameldesktopprogramma_turni
eport" '<< La directory di salvataggio
'
Sheets(mySorg).Select
Workbooks.Add
ThisWorkbook.Sheets(mySorg).Range(myRange).Copy Destination:=Range(myRange).Cells(1, 1)
'
myFile = myDir & "" & Range("A1").Value & Range("b1").Value & ".xlsx"
ActiveWorkbook.SaveAs Filename:=myFile, _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:=""
ActiveWorkbook.Close
MsgBox ("Salvato file in: " & myFile & vbCrLf & "nella directory " & myDir) & ("File salvato")
End Sub |
di nichicanta (utente non iscritto) data: 19/11/2013 13:17:20
cit:Il problema dov'è, che se specifico l'intervallo anzicchè A1:n2721 faccio i10:2721, mi da l'errore VBA.
Se ci fai caso il range da te indicato non è ben definito e cioè : I10:2721, al 2721 manca il riferimento alla cella come potrebbe essere N2721,A2721 ecc.
correggi e prova. Ti saluto.
di angy (utente non iscritto) data: 19/11/2013 13:35:46
Si giusta osservazione. Ho sbagliato a scrivere.... volevo dire i10:N2721.... nella formula completa è corretta. Solo un errore di trascrizione.....
di nichicanta (utente non iscritto) data: 19/11/2013 13:45:24
prova cosi se il foglio attivo è quello su cui stai lavorando.
ActiveSheet.Range("I10:N2721").Select
oppure, se il foglio lo devi selezionare prova cosi:
Sheets("NOME DELTUOFOGLIO").RANGE("I10:N2721")
di angy (utente non iscritto) data: 19/11/2013 18:18:12
Non ho capito in che riga della formula devo inserire la tua riga...
di nichicanta (utente non iscritto) data: 19/11/2013 19:36:50
Ciao angy potresti allegare un file di esempio cosi vedo dov'è l'errore poiché io sto provando il tuo codice sul mio Excel 2010, ovviamente cambiando i riferimenti del foglio attivo e il percorso dove salvare il file e cambiando il range come tu hai segnalato funziona bene.
Ho fatto semplicemente questo:
mySorg = "Foglio1" '<< Il foglio da copiare
myRange = "I10:N2721" '<< L'area da copiare
myDir = "C:UsersNicolaDesktopmio" '<< La directory di salvataggio
di angy (utente non iscritto) data: 19/11/2013 20:34:38
ok ti allego il file....
di nichicanta (utente non iscritto) data: 19/11/2013 21:14:53
Ciao angy prova con questo codice sostituiscilo al tuo e fammi sapere, ora non da nessun errore, ho notato che l'errore da te segnalato lo dava nel salvataggio del file e non al range.
Ho aggiunto solo il codice che va vanti e procede in caso di errore.
Sub Pulsante5_Click()
Dim mySorg As String, myRange As String, myDir As String, myFile As String
On Error Resume Next
'>>> PARAMETRI:
mySorg = "servizio_mensile" '<< Il foglio da copiare
myRange = "i10:N2721" '<< L'area da copiare
myDir = "C:userscameldesktopprogramma_turni
eport" '<< La directory di salvataggio
'
Sheets(mySorg).Select
Workbooks.Add
ThisWorkbook.Sheets(mySorg).Range(myRange).Copy Destination:=Range(myRange).Cells(1, 1)
'
myFile = myDir & "" & Range("A1").Value & Range("b1").Value & ".xlsx"
ActiveWorkbook.SaveAs Filename:=myFile, _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:=""
ActiveWorkbook.Close
MsgBox ("Salvato file in: " & myFile & vbCrLf & "nella directory " & myDir) & (" ")
End Sub |
di angy (utente non iscritto) data: 20/11/2013 09:24:24
Buongiorno a tutti....
Non va come dovrebbe.... Ti spiego... Se pigio il tasto salva mi esce fuori una maschera dove mi dice: Salvare le modifiche apportate a cartl4?
Ho tre opzioni: Salva, Non salvare, Annulla.
Se scelgo di salvare mi si riapre una nuova maschera di Salva con Nome. Quindi dovrei indicare sia il percorso che il nome del file...
Invece come si può notare nel codice vba c'è già il suo percorso, mentre il nome del file lo va a prendere dalla cella A1 e B1....
Grazie
di nichicanta (utente non iscritto) data: 20/11/2013 14:45:47
Ciao amici sto provando da tanto tempo ad aiutare l'amico angy ( vi assicuro che ho fatto tante prove ) ma non ci riesco, vi allego il codice sottostante che funziona come dovrebbe ma non appena metto il riferimento al range, es: sheets("Foglio1").range("I10:i20").value anzichè al foglio completo da copiare non funziona, cioè non mi copia il range.
per favore mi fate capire il perchè il foglio intero me lo copia e il range no?
Grazie e buon lavoro.
P.S. l'aiuto è anche per l'amico angy.
Sub SalvaConNome()
Dim Cartella As String, NomeFile As String, NomeFoglio As String, myFile As String
Cartella = "C:Usersx880588Desktop" 'percorso completo su cui salvare, ricordarsi la 'barra inversa alla fine!
NomeFile = Range("A1").Value 'cella da cui prendere il nome file
NomeFoglio = "Foglio1" 'nome esatto del foglio da copiare
If NomeFile = "" Then Exit Sub
If Right(NomeFile, 4) <> ".xls" Then NomeFile = NomeFile & ".xls"
Sheets(NomeFoglio).Copy
ActiveWorkbook.SaveAs Filename:=Cartella & NomeFile, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
MsgBox ("Salvato file in: " & Cartella & vbCrLf & "nella directory " & Cartella)
End Sub |
di angy (utente non iscritto) data: 20/11/2013 14:53:23
Grazie 1000 Nikicanta per il tuo impegno....
di Raffaele_53 (utente non iscritto) data: 20/11/2013 17:30:15
Difficile dare una mano con tutto quel casino
Nel modulo27 c'è un Auto_Open ??? Disabilitato mettendo Auto_OpenX
Nel modulo33 c'è il Pulsante5_Click()
Sotto ho copiato il Tuo codice leggermente modificato. A me salva sia il foglio che un range
Sub SalvaConNome()
Dim Cartella As String, NomeFile As String, NomeFoglio As String, myFile As String
Cartella = "C:UsersxxxxxxDocuments" 'da cambiare
NomeFile = Range("A1").Value
'NomeFoglio = "Foglio1" 'tolto
If NomeFile = "" Then Exit Sub
If Right(NomeFile, 5) <> ".xlsx" Then NomeFile = NomeFile & ".xlsx" 'come fai a salvare se devi copiare ex 66000 righe? Cambiato in .xlsx e poi non servirebbe
Sheets("Servizio_Mensile").Range("a1:H100").Copy 'da cambiare, attento le celle unite possono dare fastidio
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:=Cartella & NomeFile, _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
MsgBox ("Salvato file in: " & Cartella & vbCrLf & "nella directory " & Cartella) '???
End Sub |
di angy (utente non iscritto) data: 20/11/2013 19:57:00
Non va..... Cmq ho risolto portandomi i dati in un altro foglio per poi salvarlo....
Grazie a tutti....
Vuoi Approfondire?