Macro per cancellare determinati fogli



  • Macro per cancellare determinati fogli
    di PINIL data: 21/12/2016 21:02:11

    Ciao a tutti,
    chiedo cortesemente agli esperti amici del Forum, un aiuto sull’approntamento di una macro in VBA che risolva il seguente quesito:

    Un procedura informatica lavorativa mi genera automaticamente una cartella Excel contenente – di volta in volta - un VARIABILE numero di fogli (massimo 20), che nomina con i nomi di città (Ancona, Bari, Catania ecc.). Specifico che la platea delle 20 città è sempre la stessa, quindi immutabile sia come quantità che come nomi. Se la procedura informatica riscontra dei valori per una città, genera e compila il relativo foglio nella cartella Excel, altrimenti, non lo genera.

    Della cartella Excel generata dalla procedura, a me servono solo 5 città (Milano, Torino, Firenze, Roma, Bari), quindi ogni volta faccio un lavoro da amanuense per cancellare tutti gli altri fogli (città) che non servono, al fine di ottenere una cartella “pulita” ed essenziale, da inoltrare ai vari reparti dell’azienda.

    In pratica, la macro di cui vi chiedo ausilio, dovrebbe “ragionare” in questo modo:

    • se nella cartella c’è (ma potrebbe anche non esserci) il foglio di nome “Ancona”, elimina foglio
    • se nella cartella c’è (ma potrebbe anche non esserci) il foglio di nome “Catania”, elimina foglio
    • se nella cartella c’è (ma potrebbe anche non esserci) il foglio di nome “Venezia”, elimina foglio
    • ecc
    • ecc

    in questo modo, se la macro andasse ad eliminare tutte le potenziali città che non mi interessano, per esclusione, sulla cartella Excel, rimarrebbero le città (fogli) che interessano.

    Se non chiedo troppo, sarebbe ottimale che, quando la macro è in funzionamento ed elimina il foglio interessato, Excel non mi chieda ogni volta la conferma per l’eliminazione.

    Confido nel vostro intervento che mi aiuterebbe tantissimo nella pratica lavorativa, anche perché, tale lavoro di cancellazione dei fogli inutili, lo svolgo più volte al giorno.

    Grazie anticipatamente a chi vorrà aiutarmi

    PINIL



  • di patel data: 22/12/2016 08:53:34

    prova questa
     
    Sub delete_sheets()
    Application.DisplayAlerts = False
    arr = Array("Milano", "Torino", "Firenze", "Roma", "Bari")
    For j = Sheets.Count To 1 Step -1
      nodelete = 0
      For i = 0 To UBound(arr)
        If Sheets(j).Name = arr(i) Then nodelete = 1
      Next
      If nodelete = 0 Then Sheets(j).Delete
    Next
    Application.DisplayAlerts = True
    End Sub






  • di PINIL data: 22/12/2016 09:21:26

    WOW !!!!! Grande PATEL.
    Funziona perfettamente
    Buone Feste a Tutti gli amici del Forum

    PINIL