Problema di dimensione file



  • Problema di dimensione file
    di pisim (utente non iscritto) data: 31/07/2017 13:55:36

    Buon giorno ho un problema un po' particolare.
    Sto elaborando con codice vba un file che acquisisce molti dati (circa 75.000 righe) da un secondo file. Una volta evidenziate solo le righe di interesse si cancellano le altre, si ordinano le righe rimaste e si chiude il secondo file. Quindi l'elaborazione prosegue.
    Arrivo al punto.
    In precedenza completata l'elaborazione il file salvato era di circa 400/500 kb ora invece il salvataggio arriva a 5.500 kb!
    Andando a verificare in un file precedente e nell'ultimo dove si ferma il cursore premendo ctrl+end vedo che i precedenti salvataggi selezionavano come ultima cella quella finale delle tabelle generate, mentre ora in alcuni casi si arriva alla riga 203.000! credo che questo influisca sulla dimensione finale del file.
    Il codice è sostanzialmente identico nei due casi.

    Allora ho provato ad applicare il codice allegato che ho elaborato prendendo spunti dalla rete

    ma non ci ho risolto un tubo.

    Ho anche provato a eliminare le righe ma niente.

    Vorrei che l'ultima cella corrispondesse alla fine delle tabelle.
    Praticamente vorrei ripulire le varie tabelle ad esempio facendo in modo che l'ultima cella sia la "P204" (cominciano tutte dalla "E9").

    Che posso fare? Ma potrebbe essere altro il motivo della dimensione maggiorata del file?
    Grazie
    pisim

     
    Sub prova_pulizia()
    
    cella = ActiveCell.SpecialCells(xlLastCell).Select
        
    riga_max = ActiveCell.Row
    col_max = ActiveCell.Column
    
    Range(Cells(9, 5), Cells(riga_max, col_max)).Select
    Selection.ClearContents
    
    Range("E9").Select
    
    End Sub



  • di Vecchio Frac data: 31/07/2017 14:16:12

    cit. "credo che questo influisca sulla dimensione finale del file. "
    ---> Certamente che è così ^_^

    cit. "Ho anche provato a eliminare le righe ma niente. "
    ---> Devi eliminare anche le colonne.

    Se l'ultima cella utile è P204 devi evidenziare tutte le colonne da Q fino alla fine ed eliminarle, devi selezionare tutte le righe da 205 fino alla fine ed eliminare.
    Quindi salva con un altro nome e vedi la dimensione come crolla...





  • di Vecchio Frac data: 31/07/2017 14:18:58

    cit. "Range(Cells(9, 5), Cells(riga_max, col_max)).Select
    Selection.ClearContents"

    ---> Non devi cancellare solo il contenuto ma le intere righe/colonne.

    Range("Q:XFD").entirecolumn.delete
    Range("205:1048576").entirerow.delete





  • di pisim (utente non iscritto) data: 31/07/2017 15:46:30

    ok perfetto nuovo nome e ..... vecchia dimensione! (430kb).

    grazie.
    Sapresti dirmi anche perchè?
    Io ho tre tabelle ma ognuna ha una "ultima cella" diversa.

    grazie ancora
    saluti
    pisim



  • di Vecchio Frac data: 31/07/2017 15:49:30

    Excel memorizza tutti gli UsedRange accumulati nel tempo quando si raggiunge una cella per scriverci qualcosa (o per cancellarla). te ne accorgi premendo appunto Ctrl-Fine. Qualche volta Excel normalizza da solo, ma non sempre lo fa e nel tempo le dimensioni del file crescono. Magari bastava solo fare salva con nome, io ti ho fatto eliminare righe e colonne così da forzare Excel a ripulire l'UsedRange.





  • di pisim (utente non iscritto) data: 01/08/2017 10:03:14

    grazie per la spiegazione.
    Saluti
    pisim