Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador kill. Mostrar todas as postagens
Mostrando postagens com marcador kill. Mostrar todas as postagens

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




VBA Excel - Copiando o módulo entre os workbooks - Copy modules from one workbook to another

Inline image 1

Em algumas planilhas, em especial aquelas onde temos uns 4 ou 5 Dashboards, existem funções de navegação e mesmo layouts que são adaptáveis ao seu respectivo conteúdo (contexto). Em muitas delas o comportamento é similar, mas não exatamente igual. Podemos até tornar as funcionalidades customizáveis de acordo com a opção escolhida para análise. Com essa técnica podemos como que estender os 'poderes'  da planilha durante a análise feita nela. Isso é que é polimorfismo! O Mesmo objeto, mas com novas características nos eventos.

Antes de continuar, um pequeno parênteses, deixe seus comentários para este post. 

Bem, introdução à parte, o código abaixo permite que migre todo o conteúdo de um workbook para outro. Siga a sintaxe:CopyModule Workbooks ("Bernardes_Plan01.xlsb"), "mdl_Navigation_Functions", Workbooks ("Bernardes_Plan0.xlsb")

Sub CopyModule (SourceWB As Workbook, strModuleName As String, _
                            TargetWB As Workbook)

    Dim strFolder As String, strTempFile As String

    Let strFolder = SourceWB.Path

    If Len(strFolder) = 0 Then Let strFolder = CurDir

    Let strFolder = strFolder & "\"
    Let strTempFile = strFolder & "~tmpexport.bas"
    
    On Error Resume Next

    SourceWB.VBProject.VBComponents(strModuleName).Export strTempFile
    TargetWB.VBProject.VBComponents.Import strTempFile
    
    Kill strTempFile
    
    On Error GoTo 0
End Sub



Reference:

Tags: VBA, Excel, content, add, module, módulo, copy, copiar, Module, conteúdo, Modules, Class Modules in VBA, kill, export, workbook  


VBA Access - Como apagar arquivos - Delete, Kill, Erase

images?q=tbn:ANd9GcSZ-Cq8_QecEo2KqZMuthWjgD0YoogjLImgdFwR-fGGcmOO1_mA Não é rara a necessidade de precisarmos apagar arquivos temporários que utilizamos para importação, exportação, consolidação, geração de relatórios externos, etc...

Como posso excluir a tais?

A instrução Kill exclui os arquivos de um disco.

Sintaxe: Kill pathname

O argumento pathname é uma expressão de seqüência de caracteres que especifica um ou mais nomes de arquivo a serem excluídos. O pathname pode incluir o diretório ou pasta e a unidade.

No Microsoft Windows, Kill aceita o uso de curingas de múltiplos caracteres (*) e de um único caractere (?) para especificar múltiplos arquivos. Entretanto, no Macintosh, esses caracteres são tratados como caracteres de nomes de arquivo válidos e não podem ser usados como curingas para especificar múltiplos arquivos.

Como o Macintosh não aceita os curingas, use o tipo de arquivo para identificar grupos de arquivos a excluir. Você pode usar a função MacID para especificar o tipo de arquivo em vez de repetir o comando com nomes de arquivo separados. Por exemplo, a instrução a seguir exclui todos os arquivos TEXT da pasta atual.


Kill MacID ("TEXT")


Se você usar a função MacID com Kill no Microsoft Windows, ocorrerá um erro. Se você tentar usar Kill para excluir um arquivo aberto, ocorrerá um erro.

Você pode deletar vários arquivos em um diretório

Estou tentando apagar arquivos temporários que o MS Word às vezes deixa para trás, quando não os consegue limpar corretamente. 

Digamos os arquivos como ~$lename.dot. Utilizar apenas o comando Kill, não funciona para arquivos ocultos como estes. mas, se eu mudar seus atributos ele funciona perfeitamente. 

Existe uma comando que pode matar arquivos ocultos também? Se não, como posso contornar uma situação como este problema que impede alguns modelos mailmerge de serem excluídos? 

Como quero executar o comando fora de um botão. Estou pegando o caminho de um DLookup, pois varia de local para local.


Function KillTempFiles()



If Dir(DLookup("[Path]", "tblMailmerge", "mID=1") & "~*.dot") > "" Then

Kill (DLookup("[Path]", "tblMailmerge", "mID=1") & "~*.dot")

End If


On Error Resume Next


End Function

No entanto, a declaração Kill não pode excluir arquivos somente leitura, por isso, a menos que não exista chance de que o arquivo possa ser marcado como readonly, deve-se primeiro remover o atributo readonly do arquivo. Pode fazer isso da seguinte forma:


Dim KillFile As String

Let KillFile = "c:\bernardes\inanyplace.doc"

' Checa se o arquivo existe
If Len(Dir$(KillFile)) > 0 Then

    ' Primeiro remove o atributo de readonly, caso esteja assim configurado
    SetAttr KillFile, vbNormal

    ' Deleta o aqruivo.
     Kill KillFile
End If

Para deletar todos os arquivos em um diretório:

' Faz um Loop através de todos os arquivos em um diretório por usar a função Dir$

Dim MyFile As String


Let MyFile = Dir$ ("c:\Bernardes\*.*")


Do While MyFile <> ""

    KillProperly "c:\Bernardes\" & MyFile


    ' É necessário especificar o caminho novamente, porque o arquivo foi deletado.

    Let MyFile = Dir$ ("c:\Bernardes\*.*")

Loop


Alternativamente, você pode ler todos os valores em uma matriz, e excluir todos os arquivos usando um loop. Esse será um processo mais rápido se o diretório for muito grande, caso contrário não notará qualquer diferença.


Referências: StackoverFlow
               Bytes
               MVPS




Tags

Access, Kill, Delete, Del, Excluir, deletar, apagar, arquivo, file, archive


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

       







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.

 
       
diHITT - Notícias