Cómo eliminar por lotes varios archivos no deseados o no utilizados con Excel VBA

Comparte ahora:

Puede haber varios archivos no deseados y no utilizados consumiendo su espacio en disco. Limpiar estos archivos puede ser una tarea enorme. Con Excel, puede encontrar fácilmente esos archivos no utilizados y eliminarlos instantáneamente para liberar espacio en el disco.

Descargar Ahora

Si quieres starPara utilizar el software lo antes posible, puede:

Descargue el software ahora

De lo contrario, si desea hacer bricolaje, puede leer el contenido a continuación.

Preparemos la GUI

Elimine las hojas no deseadas del libro de trabajo y cambie el nombre de la Hoja 1 como GUI y guarde el libro de trabajo como libro de trabajo habilitado para macros. Como se muestra en la imagen adjunta, cree dos botones en la hoja y cambie el nombre del Botón 1 como "Examinar" y cambie el nombre del Botón 2 como "Eliminar archivos". Puede combinar varias columnas para crear una columna más grande para acomodar la ruta del archivo o puede aumentar el ancho de una sola columna.Preparar la GUI

Hagámoslo funcional

Copie el script en un nuevo módulo en su libro de trabajo habilitado para macros. Asegúrese de que el nombre del módulo sea Module1. De lo contrario, el script arrojará un error. Adjunte el script “Scan_This_Folder” al botón “Examinar” y el procedimiento “Eliminar_archivos” debe adjuntarse al botón “Eliminar archivos”.

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

¿Cómo funciona?

Código VBACuando el usuario selecciona una carpeta, el script lee todos los archivos dentro de la carpeta seleccionada y muestra el nombre del archivo junto con la última fecha de modificación. Verifique la lista, elimine filas si desea conservar el archivo y luego haga clic en el botón "Eliminar archivos". El script ahora identificará la última fila utilizada y eliminará los archivos que leen la ruta del archivo de la hoja.

Retocarlo

A partir de ahora, el script busca archivos dentro de la carpeta seleccionada. Si hay subcarpetas dentro de la carpeta seleccionada, la secuencia de comandos no puede escanearla. Puede modificar el script para escanear todas las subcarpetas dentro de la carpeta raíz y también crear una nueva columna para comparar la "Fecha de última modificación" de los archivos con la fecha actual y mostrar los Días. A continuación, puede modificar el script para eliminar archivos automáticamente según la cuenta de días. Aunque el script utiliza la técnica de script de archivos de Microsoft, las propiedades de archivo de xlsx dañado los archivos no se pueden recuperar.

Introducción del autor:

Nick Vipond es un experto en recuperación de datos en DataNumen, Inc., que es el líder mundial en tecnologías de recuperación de datos, incluyendo recuperar palabra y productos de software de recuperación de Outlook. Para más información visite www.datanumen.com.

Comparte ahora:

Los comentarios están cerrados.