Risultati da 1 a 12 di 12

Discussione: Cancellare files excel vuoti presenti in una cartella tramite macro



  1. #1
    L'avatar di gigio
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    Venezia
    Età
    37
    Messaggi
    5
    Versione Office
    Excel 2010
    Utile ricevuti
    0
    Utile dati
    0

    Cancellare files excel vuoti presenti in una cartella tramite macro

    Chiedo a qualcuno che magari ha avuto la mia stessa esigenza un aiuto...

    Ho la necessità di cancellare (tramite una macro) tutti i files excel vuoti (ovvero senza alcuna cella avvalorata) eventualmente presenti in una determinata directory. Naturalmente, se non sono presenti files excel con tale caratteristica, la macro non deve far nulla.
    Cercando e ricercando sia nel forum che tramite google non ho trovato niente del genere...

    Grazie in anticipo a chi vorrà darmi una mano

  2. #2
    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    63
    Messaggi
    3197
    Versione Office
    2007 - 2013
    Utile ricevuti
    432
    Utile dati
    69

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    Ciao Gigio

    L'istruzione VBA per cancellare un file è KILL e quella per scorrere una cartella è DIR.

    Quello che mi rende perplesso è il perplesso è il controllo se il file sia vuoto.

    Ogni file può avere un numero enorme di fogli ed ogni foglio ha circa 16.000 colonne per oltre 1 milione di righe.

    Dovresti specificare/delimitare meglio la tua richiesta.
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"

    "Solo due cose sono infinite: l'universo e la stupidità umana; riguardo l'universo ho ancora dei dubbi" (Albert Einstein)

  3. #3
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    817
    Versione Office
    2000 - 2013
    Utile ricevuti
    272
    Utile dati
    151

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    Buona giornata, Gigio;
    quello che posso cercare di realizzare è:
    - Aprire i singoli File presenti in una Directory (Cartella)
    - Verificare quanti Fogli di lavoro sono presenti in ogni singolo File
    - Contare quanti valori sono presenti nel Foglio di lavoro attivo nel File
    Se questi due Valori sono uguali a zero, cancellare il File.

    In realtà, potri pensare di verificare il numero dei valori presenti in ogni Foglio di lavoro, ma, in questo modo il Codice VBA potrebbe essere rallentato in modo significativo; non so se è il caso di operare questo ulteriore controllo.

    Nel caso Tu lo ritenga opportuno, possiamo approfondire.



    A disposizione.

    Buon Lavoro e buona serata.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  4. #4
    L'avatar di gigio
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    Venezia
    Età
    37
    Messaggi
    5
    Versione Office
    Excel 2010
    Utile ricevuti
    0
    Utile dati
    0

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    Citazione Originariamente Scritto da GiuseppeMN Visualizza Messaggio
    Buona giornata, Gigio;
    quello che posso cercare di realizzare è:
    - Aprire i singoli File presenti in una Directory (Cartella)
    - Verificare quanti Fogli di lavoro sono presenti in ogni singolo File
    - Contare quanti valori sono presenti nel Foglio di lavoro attivo nel File
    Se questi due Valori sono uguali a zero, cancellare il File.

    In realtà, potri pensare di verificare il numero dei valori presenti in ogni Foglio di lavoro, ma, in questo modo il Codice VBA potrebbe essere rallentato in modo significativo; non so se è il caso di operare questo ulteriore controllo.

    Nel caso Tu lo ritenga opportuno, possiamo approfondire.



    A disposizione.

    Buon Lavoro e buona serata.

    Giuseppe
    Grazie per la disponibilità!

    Come consigliato da Alfrimpa preciso meglio la richiesta: i files presenti nella cartella sono di fatto tutti files excel molto lineari che si compongono di un unico foglio di lavoro. Di fatto la verifica se trattasi di foglio vuoto o meno potrebbe volendo essere fatta anche semplicemente sulla sola colonna A.
    Io pensavo appunto di realizzare il tutto tramite ciclo FOR/NEXT sulla cartella e quindi comando KILL sui files individuati come "vuoti". E' proprio quest'ultimo particolare che mi mette in crisi

  5. #5
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    1812
    Versione Office
    Excel2010
    Utile ricevuti
    448
    Utile dati
    109

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    Ciao
    da quanto leggo mi sembri abbastanza addentro alle problematiche di Excel-VBA.
    Ti propongo una macro che "legge" se un foglio è vuoto oppure seleziona l'ultima cella piena se c'è.
    Inserita in un ciclo che apra/chiuda i file, facendo riferimento al foglio può dirti se è vuoto o meno e, se vuoto, puoi inserire il tuo codice KILL

    Codice: 
    Sub Controllo()
    If ActiveSheet.UsedRange.SpecialCells(xlLastCell, xlNumbers) = "" Then
        GoTo fine
    Else
        ActiveSheet.UsedRange.SpecialCells(xlLastCell, xlNumbers).Select
    MsgBox "La cella selezionata è PIENA"
    End If
    Exit Sub
    
    
    fine:
    MsgBox "Il Foglio è vuoto"
    End Sub
    Prova e fai sapere. Ciao,
    Mario

  6. #6
    L'avatar di gigio
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    Venezia
    Età
    37
    Messaggi
    5
    Versione Office
    Excel 2010
    Utile ricevuti
    0
    Utile dati
    0

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Ciao
    da quanto leggo mi sembri abbastanza addentro alle problematiche di Excel-VBA.
    Ti propongo una macro che "legge" se un foglio è vuoto oppure seleziona l'ultima cella piena se c'è.
    Inserita in un ciclo che apra/chiuda i file, facendo riferimento al foglio può dirti se è vuoto o meno e, se vuoto, puoi inserire il tuo codice KILL

    Codice: 
    Sub Controllo()
    If ActiveSheet.UsedRange.SpecialCells(xlLastCell, xlNumbers) = "" Then
        GoTo fine
    Else
        ActiveSheet.UsedRange.SpecialCells(xlLastCell, xlNumbers).Select
    MsgBox "La cella selezionata è PIENA"
    End If
    Exit Sub
    
    
    fine:
    MsgBox "Il Foglio è vuoto"
    End Sub
    Prova e fai sapere. Ciao,
    Mario



    Ciao e 1000 grazie per la dritta Marius!!!

    Ho realizzato la seguente macro, che sembra funzionare a dovere...


    Codice: 
    Sub Controllo()
    
        Dim FolderPath As String
        Dim FileName As String
        Dim FileNameCompleto As String
        Dim WorkBk As Excel.Workbook
    
        
        ' Propria direcory
        FolderPath = "C:\Vendite\"
        
        ' Scorre l'elenco dei files excel
        FileName = Dir(FolderPath & "*.xl*")
        FileNameCompleto = FolderPath & FileName
        
        ' Fa il loop su tutti i files trovati
        Do While FileName <> ""
            ' apre il foglio
            Set WorkBk = Workbooks.Open(FolderPath & FileName)
                    
            Worksheets("Foglio1").Activate
    
        If ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row > 1 Then
            GoTo fine
            
            Else
            MsgBox "Il foglio è vuoto"
            WorkBk.Close savechanges:=False
            Kill (FileNameCompleto)
    
        End If
    
    fine:
        MsgBox "Il Foglio ha righe completate"
            ' chiude il file
            WorkBk.Close savechanges:=False
    
        ' prosegue con gli altri files
        FileName = Dir()
        Loop
        
    
    Sheets("Foglio1").Select
    
    
    
    End Sub
    
    tuttavia facendo le varie prove (mettendo nella mia cartella files excel vuoti e files con righe avvalorate), succede che una volta cancellato un file (perchè appunto vuoto) excel dà questo errore:

    "Metodo 'close' dell'oggetto '_Workbook' non riuscito"

    Il debugger mi evidenzia a quel punto la riga della subroutine seguente evidenziata in rosso:

    :
    Codice: 
    
    
    fine:
        MsgBox "Il Foglio ha righe completate"
            ' chiude il file
            WorkBk.Close savechanges:=False
    
    

    Sai a cosa puà essere dovuto l'errore e a cosa si riferisce? Facendo prove con due soli files (uno vuoto e uno no) il problema non si presenta.


    Ciao e grazie!

  7. #7
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    1812
    Versione Office
    Excel2010
    Utile ricevuti
    448
    Utile dati
    109

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    Ciao Gigio
    Fai attenzione al codice che hai scritto perchè ho l'impressione che si aggrovigli su se stesso.
    Nel Do ... Loop ad un certo punto trova un file vuoto, ti dà il messaggio ed elimina il file. Qui è finita la condizione If ... End if e cosa trova? la continuazione del Loop ed esegue fine:

    Prova, ma non son sicuro che vada bene, a mettere dopo l'istruzione KILL, una riga sotto, un rimando tipo continua: e questa parola continua: la inserisci subito prima di Loop (crea lo spazio adatto).

    Fai sapere. Ciao,
    Mario

  8. #8
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    71
    Messaggi
    773
    Versione Office
    2010
    Utile ricevuti
    114
    Utile dati
    1

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    io proverei così
    Codice: 
    Sub Controllo()
        FolderPath = "F:\download\Test\"
        
        ' Scorre l'elenco dei files excel
        FileName = Dir(FolderPath & "*.xl*")
        ' Fa il loop su tutti i files trovati
        Do While FileName <> ""
            ' apre il foglio
            Set WorkBk = Workbooks.Open(FolderPath & FileName)
              If ActiveSheet.UsedRange.SpecialCells(xlLastCell, xlNumbers) = "" Then
              MsgBox "Il Foglio " & FileName & " è vuoto"
              WorkBk.Close savechanges:=False
              Kill (FolderPath & FileName)
            Else
              MsgBox "Il Foglio " & FileName & " non è vuoto"
              WorkBk.Close savechanges:=False
            End If
            FileName = Dir()
        Loop
    End Sub

  9. #9
    L'avatar di gigio
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    Venezia
    Età
    37
    Messaggi
    5
    Versione Office
    Excel 2010
    Utile ricevuti
    0
    Utile dati
    0

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    Ciao Gigio
    Fai attenzione al codice che hai scritto perchè ho l'impressione che si aggrovigli su se stesso.
    Nel Do ... Loop ad un certo punto trova un file vuoto, ti dà il messaggio ed elimina il file. Qui è finita la condizione If ... End if e cosa trova? la continuazione del Loop ed esegue fine:

    Prova, ma non son sicuro che vada bene, a mettere dopo l'istruzione KILL, una riga sotto, un rimando tipo continua: e questa parola continua: la inserisci subito prima di Loop (crea lo spazio adatto).

    Fai sapere. Ciao,
    Mario

    Niente, anche con la specifica continua: va in errore

  10. #10
    L'avatar di freepredator
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Milano
    Età
    31
    Messaggi
    43
    Versione Office
    2010
    Utile ricevuti
    1

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    Ciao a tutti, è la prima volta che anziché chiedere un supporto, provo a dare una mano..

    Ho provato a modificare un attimino il codice fornito da patel.. che non me ne voglia!!! :)

    Codice: 
    Sub Pulsante1_Click()
    Dim FolderPath As String
    Dim WorkBK As Workbook
    Dim stringa As String
    
    
        FolderPath = ActiveWorkbook.Path
        ChDir FolderPath
        
        ' Scorre l'elenco dei files excel
        Filename = Dir(FolderPath & "\" & "*.xlsx")
        stringa = "\" & Filename
        ' Fa il loop su tutti i files trovati
        Do While Filename <> ""
            ' apre il foglio
            Set WorkBK = Workbooks.Open(FolderPath & stringa)
              If ActiveSheet.UsedRange.SpecialCells(xlLastCell, xlNumbers) = "" Then
              MsgBox "Il Foglio " & Filename & " è vuoto"
              WorkBK.Close savechanges:=False
              Kill (FolderPath & stringa)
            Else
              MsgBox "Il Foglio " & Filename & " non è vuoto"
              WorkBK.Close savechanges:=False
            End If
            Filename = Dir()
            stringa = "\" & Filename
        Loop
    End Sub
    1. Inserito path, in modo tale che in qualsiasi cartella tu posizioni il documento XLSM (contenente la macro), esso ti funzioni.
    2. aggiunto "\" per separare il DIR dal nome del file
    3. definito ".xlsx" presupponendo che siano solo documenti Excel - (.xlsm contenente la macro viene quindi autoescluso)
    4. aggiunta variabile stringa, che si aggiorna ad ogni file, assumendo sempre il valore da Filename

    Sono sicuro che si possa ottimizzare il codice, ma così a me funziona alla grande..

  11. #11
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    71
    Messaggi
    773
    Versione Office
    2010
    Utile ricevuti
    114
    Utile dati
    1

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    fai bene a sperimentare, ma secondo me nel tuo caso bastava scrivere
    FolderPath = ActiveWorkbook.Path & "\"
    e lasciare tutto il resto inalterato

  12. #12
    L'avatar di gigio
    Clicca e Apri
    Data Registrazione
    Sep 2016
    Località
    Venezia
    Età
    37
    Messaggi
    5
    Versione Office
    Excel 2010
    Utile ricevuti
    0
    Utile dati
    0

    Re: Cancellare files excel vuoti presenti in una cartella tramite macro

    Fantastico, funziona perfettamente!

    Grazie 1000 per l'aiuto a tutti!

Discussioni Simili

  1. [Risolto] Elencare file presenti in una cartella, per rinominarli tramite lista
    Di Antonio57 nel forum Domande su Excel VBA e MACRO
    Risposte: 13
    Ultimo Messaggio: 16/03/17, 20:46
  2. Creazione Packing List - Dati Presenti su Altri Fogli ma nella Stessa Cartella
    Di Bauhaus nel forum Domande su Excel VBA e MACRO
    Risposte: 2
    Ultimo Messaggio: 05/03/17, 23:12
  3. Lista elenco files presenti in sottosottosotto cartella
    Di G.Bove nel forum Domande su Excel VBA e MACRO
    Risposte: 5
    Ultimo Messaggio: 26/02/17, 17:43
  4. [Risolto] Lanciare macro se in cartella sono presenti files .txt
    Di Gatt88 nel forum Domande su Excel VBA e MACRO
    Risposte: 11
    Ultimo Messaggio: 14/12/16, 17:04
  5. Importare dati da files presenti in un elenco
    Di Japogi nel forum Domande su Excel VBA e MACRO
    Risposte: 31
    Ultimo Messaggio: 02/08/16, 10:51

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •