VBA Tips - Apagando Arquivos - Delete Files and Folders


Veja também:

MS Excel – Diversas Funções Úteis

É bem provável que já tenha precisado de algo similar no MS Excel, mas não teve a oportunidade de encontrar essa informação de modo organizado, como estou propondo colocar abaixo.

Ao gerarmos os nossos diversos Relatórios, inclusive Dashboards, invariavelmente precisaremos gravar as versões em pastas.

Digamos que deseje gravar as informações geradas nas pastas customizadas, talvez com a data do momento da geração. Precisaríamos criar uma pasta para a transferência dos mesmos.

É importante frisar que não há como recuperar o arquivo excluído uma vez que o tenhamos deletado. O arquivo não é enviado para a lixeira do Windows.

Em qualquer um dos códigos listados neste artigo, ao executar um código VBA que inclua a instrução Kill, o código poderá excluir todos os arquivos armazenados em uma pasta ou em um servidor de rede.

Sub DelSample001()
 ' Você pode usar este código para apagar todos os arquivos na pasta de teste.
    On Error Resume Next

    Kill "E:\Bernardes\Dashboards\*.*"

    On Error GoTo 0
End Sub

Sub DelSample002()
 ' Você pode usar este código para apagar todos os arquivos xl? na pasta de teste.
    On Error Resume Next
    Kill "E:\Bernardes\Dashboards\*.xl*"
    On Error GoTo 0
End Sub

Sub DelSample003()
 ' Você pode usar este código para apagar um arquivo xls na pasta de teste.
    On Error Resume Next

    Kill "E:\Bernardes\Dashboards\ron.xls"
    On Error GoTo 0
End Sub

Sub DelSample004()
 ' Você pode usar este código para apagar a pasta inteira.
 ' Note: RmDir delete only a empty folder
    On Error Resume Next

    Kill "E:\Bernardes\Dashboards\*.*"    ' delete all files in the folder

    RmDir "E:\Bernardes\Dashboards\"  ' delete folder

    On Error GoTo 0
End Sub

Sub Delete_Whole_Folder()
' Você pode usar este código para apagar a pasta inteira sem remover os 1ºs arquivos como na função DelSample004.
    Dim FSO As Object
    Dim MyPath As String

    Set FSO = CreateObject("scripting.filesystemobject")

    MyPath = "C:\Users\Ron\Test"  '<< Change

    If Right(MyPath, 1) = "\" Then
        MyPath = Left(MyPath, Len(MyPath) - 1)
    End If

    If FSO.FolderExists(MyPath) = False Then
        MsgBox MyPath & " não existe."

        Exit Sub
    End If

    FSO.deletefolder MyPath

End Sub

Sub Clear_All_Files_And_SubFolders_In_Folder()
' Apaga todos os arquivos nas subpastas.
' Certifique-se de que não haja nenhum arquivo aberto na pasta.
    Dim FSO As Object
    Dim MyPath As String

    Set FSO = CreateObject("scripting.filesystemobject")

    MyPath = "E:\Bernardes\Dashboards\Test"  '<< Change

    If Right(MyPath, 1) = "\" Then
        MyPath = Left(MyPath, Len(MyPath) - 1)
    End If

    If FSO.FolderExists(MyPath) = False Then
        MsgBox MyPath & " não existe."
        Exit Sub
    End If

    On Error Resume Next

    ' Apaga os arquivos.
    FSO.deletefile MyPath & "\*.*", True

    ' Apaga as pastas.
    FSO.deletefolder MyPath & "\*.*", True

    On Error GoTo 0

End Sub

Para impedir que os arquivos sejam excluídos pela instrução Kill, certifique-se de que as declarações de Kill sempre refiram-se a um caminho válido e a um nome de arquivo válido. Os exemplos a seguir demonstram a sintaxe que devemos utilizar:

   Kill "\\server\share\myfiles\*.old"
   Kill "E:\myfiles\*.old"
   Dim FileList As String
   FileList = "*.old"
   Kill "\\server\share\myfiles\" & FileList
   Dim FileList As String, NetPath As String
   NetPath = "\\server\share\myfiles\"
   FileList = "*.old"
   Kill NetPath & FileList
Esses são usos válidos da instrução Kill. 

Tags: VBA, Tips, Ron de Bruin, delete, files, file, folder, kill




Nenhum comentário:

Postar um comentário

diHITT - Notícias