Salva un intervallo specifico



  • 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....