Kuinka erä poistaa useita ei-toivottuja tai käyttämättömiä tiedostoja Excel VBA: lla

Levytilaa saattaa syödä useita ei-toivottuja ja käyttämättömiä tiedostoja. Näiden tiedostojen puhdistaminen voi olla valtava tehtävä. Excelin avulla voit helposti löytää tällaiset käyttämättömät tiedostot ja poistaa ne välittömästi vapauttaaksesi levytilaa.

Lataa nyt

Jos haluat aloittaa ohjelmiston käytön mahdollisimman pian, voit:

Lataa ohjelmisto nyt

Muussa tapauksessa voit lukea sisällön alla olevasta sisällöstä.

Valmistellaan käyttöliittymä

Poista ei-toivotut taulukot työkirjasta ja nimeä Arkki 1 uudelleen GUI: ksi ja tallenna työkirja makrokäyttöisenä työkirjana. Kuten oheisessa kuvassa näkyy, luo taululle kaksi painiketta ja nimeä painike 1 uudelleen "Selaa" ja nimeä painike 2 nimellä "Poista tiedostot". Voit joko yhdistää useita sarakkeita ja luoda suuremman sarakkeen tiedostopolun mukaiseksi, tai voit lisätä yhden sarakkeen leveyttä.Valmista GUI

Tehdään siitä toimiva

Kopioi komentosarja uuteen moduuliin makrokäyttöisessä työkirjassa. Varmista, että moduulin nimen on oltava Moduuli1. Muuten komentosarja heittää virheen. Liitä komento "Scan_This_Folder" painikkeeseen "Selaa" ja toimenpide "Poista_tiedostot" tulee liittää painikkeeseen "Poista tiedostot".

Sub filefordelete()
    Dim v_var1 As Scripting.FileSystemObject
    Dim v_var2 As Scripting.Folder
    Dim v_var3 As Scripting.File
    scanthis = Range("B3").Text
    Set v_var1 = New Scripting.FileSystemObject
    Set v_var2 = v_var1.GetFolder(scanthis)
    i = 7
    For Each v_var3 In v_var2.Files
        Cells(i, 2) = v_var3
        Cells(i, 11) = v_var3.DateLastModified
        i = i + 1
    Next v_var3
    Set v_var1 = Nothing
End Sub

Sub Delete_Files()
    Dim lr As Long
    Dim r As Long
    lr = Range("B" & Rows.Count).End(xlUp).Row
    For r = 7 To lr
        Kill Range("B" & r).Value
    Next r
End Sub

Function scanthisfolder() As String
    Dim v1 As FileDialog
    Dim v2 As String
    Set v1 = Application.FileDialog(msoFileDialogFolderPicker)
    With v1
        .Title = "Folder to scan for files"
        .AllowMultiSelect = False
        If .Show <> -1 Then GoTo NextCode
        v2 = .SelectedItems(1)
    End With
NextCode:
    scanthisfolder = v2
    Set v1 = Nothing
End Function

Sub Scan_This_Folder()
    Range("B3").Value = scanthisfolder()
    Call Module1.filefordelete
End Sub

Miten tämä toimii?

VBA-koodiKun käyttäjä valitsee kansion, komentosarja lukee kaikki valitun kansion tiedostot ja näyttää tiedoston nimen sekä viimeksi muokatun päivämäärän. Tarkista luettelo, poista rivit, jos haluat säilyttää tiedoston, ja napsauta sitten Poista tiedostot -painiketta. Komentosarja tunnistaa nyt viimeksi käytetyn rivin ja poistaa tiedostopolun lukevat tiedostot taulukosta.

Nipistä sitä

Tästä lähtien skripti etsii tiedostoja valitusta kansiosta. Jos valitussa kansiossa on alikansioita, komentosarja ei voi skannata sitä. Voit säätää komentosarjaa skannataksesi kaikki juurikansiossa olevat alikansiot ja luomalla myös uuden sarakkeen, jossa verrataan tiedostojen "Viimeinen muokkauspäivä" nykyiseen päivämäärään ja näytetään Päivät. Voit sitten säätää komentosarjaa tiedostojen poistamiseksi automaattisesti päivien määrän perusteella. Vaikka komentosarja käyttää Microsoftin tiedostojen komentosarjatekniikkaa, tiedoston ominaisuudet vaurioitunut xlsx tiedostoja ei voi noutaa.

Tekijän esittely:

Nick Vipond on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien palauta sana ja Outlook-palautusohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com.

Kommenttien lisääminen on estetty.