VBA - Deletando arquivos - Deletando pastas - Deletando Diretórios - Delete via Vba




Já tentou apagar um arquivo externo à sua aplicação, talvez uma planilha ou um arquivo texto? 
Pense, como posso excluir um arquivo?


Delete Files Via Vba
Delete Text File
Delete a folder and all subfolders and files
Delete files in a folder VBA
Deleting a file in VBA
How remove file
How to delete files using VBA
How to use VBA to delete files
I need to copy, rename and delete files in a folder
Macro to delete all files





Move and Delete files and folders
Remove Files


Poderia basicamente usar o comando Kill, mas um programador preocupado precisa permitir a possibilidade de existir um arquivo que está sendo usado somente como leitura, eis a função para você:







 DeleteFile ("Bernardes_Dashboard_Results.txt")











Sub DeleteFile(ByVal FileToDelete As String)





   If FileExists(FileToDelete) Then 'See above





      SetAttr FileToDelete, vbNormal





      Kill FileToDelete




   End If





End Sub





Não se esqueça da função que checa a existência do arquivo:







Function FileExists(ByVal FileToTest As String) As Boolean




   Let FileExists = (Dir(FileToTest) <> "")




End Function




Ahhh, você pode definir uma referência para a biblioteca Scripting.Runtime e depois usar o FileSystemObject, este tem dois métodos DeleteFile e FileExists.

Não vou esconder que temos outras opções:







Let nTest = Dir(filename)





If not nTest="" then





Kill(Filename)





end if





O código a seguir pode ser usado para testar a existência de um arquivo, e depois excluí-lo:







Dim aFile As String





Let nFile = "c:\Bernardes_Dashboard_Results.txt"





If Len(Dir$(nFile)) > 0 Then




     Kill nFile




End If





Estava me segurando, mas preciso avisar-lhe quanto a não permitir que o código retorne uma mensagem de erro do tipo "Descupe-me, mas não existe nenhum código para apagar", então coloque também algo como o mostrado abaixo:







On Error Resume Next 





Kill "









c:\Bernardes_Dashboard_Results.txt




"





On Error Goto 0





Return Len(Dir$(aFile)) > 0 





As opções não param. Aqui está um método simples de apagar uma pasta e todos os arquivos e subpastas. Ele usa o File System Object (objeto sistema de arquivos). 

Para usá-lo, você terá que definir uma referência para o Microsoft Scripting Runtime geralmente encontrada em C:\WINDOWS\system32\scrrun.dll.







Sub DeleteAllFolders(FolderPath As String)









   Dim fso As Scripting.FileSystemObject




   Set fso = New Scripting.FileSystemObject




  




   On Error Resume Next




   fso.DeleteFolder (FolderPath)




   Set fso = Nothing









End Sub





O método fso.DeleteFolder não pode retirar a barra à direita ("\")  do path, por isso precisamos removê-la quando aparecer.







Function CorrectPath(FolderPath As String) As String




    




    Let FolderPath = Trim(FolderPath)





    If Right(FolderPath, 1) = "\" Then




        Let CorrectPath = Left(FolderPath, Len(FolderPath) - 1)




    Else




        Let CorrectPath = FolderPath




    End If




End Function




Referências: MSDN
                    Stackoverflow
                    Tektips

Tag: Bernardes, MS, Microsoft, Office, files, arquivo
, archive,
 deletar, apagar, excluir, kill


André Luiz Bernardes
A&A® - Work smart, not hard.

 
       

Um comentário:

  1. como limpar pastas do outlook com o vba? pastas não padrão (caixa de entrada, etc)

    ResponderExcluir

diHITT - Notícias