Split



  • Split
    di OSTE (utente non iscritto) data: 28/01/2015 19:52:04

    Ciao a tutti ragazzi! e grazie in anticipo!

    Ho un file in csv molto grande.. con tantissime righe.. mi servirebbe una macro che lo splitti in più csv.
    Avevo pensato ad una macro che mi permetta di dire da che riga a riga copiare.. oppure non so se avete altre idee sono ben gradite!!!
    Non mi serve copiare il file sull'excel ma solo splittare..

    Help me please!! :)

    Grazie mille



  • di Vecchio Frac data: 28/01/2015 20:28:37

    Qual è il motivo per cui vuoi dividere il file csv in pezzi più piccoli? Che poi magari dovrai riunire se vuoi riavere i dati integri! Excel non riesce a gestirlo come vorresti?





  • di Vecchio Frac data: 28/01/2015 20:54:26

    Prova il codice che ti riporto.
    Prende un file di testo composto da ventimila righe e lo spezza in cinque file di quattromila righe ciascuno.
    Ogni pezzo ha lo stesso nome del file originale cui viene aggiunto un numero progressivo.
    E' velocissimo.
     
    Option Explicit
    
    Sub read_file()
    Dim MyData As String, strData() As String
    Dim i As Integer, j As Integer, chunk As Integer
    
        Open "C:Users
    omeutenteDesktop	est.txt" For Binary As #1
        MyData = Space$(LOF(1))
        Get #1, , MyData
        Close #1
        strData() = Split(MyData, vbCrLf)
        
        j = 0
        For i = 1 To 5
            Open "C:Users
    omeutenteDesktop	est_" & i & ".txt" For Binary As #1
            For chunk = j + 0 To j + 3999
                MyData = strData(chunk)
                Put #1, , MyData & vbCrLf
            Next
            j = j + 4000
            Close #1
        Next
        
    End Sub






  • di OSTE (utente non iscritto) data: 28/01/2015 20:56:53

    Vorrei fosse così :) ... Purtroppo è un file immenso, oltre il milione di righe.. Non dovrò riunire di nuovo.. Hai qualche idea?? Grazieee



  • di Vecchio Frac data: 28/01/2015 21:25:24

    Certo che ho un'idea, e te l'ho già detta, e ti ho pure fornito il codice pronto.
    Milione o miliardo di righe, il tipo di dato String le gestisce finché c'è Ram ^_^





  • di Oste (utente non iscritto) data: 28/01/2015 22:00:27

    Scusa vecchio frac ho inviato senza vedere la tua pronta risposta! Provo il codice e ti dico!! Grazie mille ancora



  • di OSTE (utente non iscritto) data: 28/01/2015 22:27:56

    Ho un problema "Out of string space" su MyData=Space$(LOF(1))... COme mai ?? ?



  • di Vecchio Frac data: 29/01/2015 08:50:03

    Lo spazio in memoria destinato a contenere la stringona che rappresenta il tuo file è esaurito... il file è *davvero* così grosso? di quanti giga stiamo parlando?





  • di scossa data: 29/01/2015 08:58:11

    Cit. Help in linea del tipo dati Stringa (Excel 2010):
    "Stringhe di lunghezza variabile, che possono contenere fino a circa 2 miliardi (2^31) di caratteri".



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di Vecchio Frac data: 29/01/2015 10:33:54

    Infatti mi ricordavo di questa capacità... 2 Gigabyte appunto.





  • di OSTE (utente non iscritto) data: 29/01/2015 10:53:07

    Circa 1 gb .. infatti non capisco :(



  • di rita (utente non iscritto) data: 29/01/2015 17:25:20

    Scusate ne approfitto ed entro in punta di piedi solo per chiedere una cosa a Vecchio Frac
    se gestisci i file txt conosco
    open "xxxx".txt for input
    open "xxxx".txt for output
    open "xxxx".txt for append
    ma open "xxxx".txt for binary cosa fa?





  • di Vecchio Frac data: 29/01/2015 20:57:15

    Ho provato anche a creare un file di testo di oltre un Giga, ma il programma stranamente si blocca... sembra che non digerisca pezzi più grandi di 100 Mega.

    @Rita
    La parola chiave Binary è usata con l'istruzione Open ed è un'altra modalità di accesso ad un file. Il quale viene aperto e letto come sequenza di byte. In questa modalità si usano tipicamente le istruzioni put e get (per scrivere o leggere dal file) con i quali puoi avere accesso ad ogni singolo byte del file (puoi vedere esempi nella guida).





  • di OSTE (utente non iscritto) data: 30/01/2015 10:47:47

    Grazie a tutti per l'interesse! :) ..Vecchio Frac ma secondo te passare da Access? li riesco ad aprirlo il file..



  • di Vecchio Frac data: 30/01/2015 10:59:02

    Pensa che stavo pensando di suggerirti Winzip o Winrar che sono in grado di spezzare file in pezzi di dimensioni definite, anche senza compressione :)
    Comunque vero, Access può collegarsi al file csv trattandolo come una tabella e da lì poi è un attimo recuperare con una serie di query un numero finito di record da travasare in tabelle (files) più piccole.





  • di OSTE (utente non iscritto) data: 30/01/2015 13:49:11

    Sisis sulla soluzione manuale ci siamo! :) ma volevo automatizzare un po'! dato che probabilmente dovrò rifarlo..