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.

       







Nenhum comentário:

Postar um comentário

diHITT - Notícias