135 votes

Supprimer un fichier dans VBA

À l’aide de VBA, comment puis-je (a) vérifier si un fichier existe et, le cas échéant, (b) le supprimer?

207voto

Onorio Catenacci Points 6130

1.) Vérifiez ici. Fondamentalement ce faire:

Function FileExists(ByVal FileToTest As String) As Boolean
   FileExists = (Dir(FileToTest) <> "")
End Function

Je vais le laisser pour vous de comprendre les diverses erreur de manipulation nécessaire, mais ce sont parmi les erreurs de manipulation des choses, je serais en considérant:

  • Vérifier la présence d'une chaîne vide est passé.
  • Vérifier pour une chaîne de caractères contenant des caractères illégaux dans un nom de fichier/chemin

2.) Comment Supprimer un Fichier. Regardez cette. Fondamentalement, utilisez la commande Kill, mais vous avez besoin de prévoir la possibilité d'un fichier en lecture seule. Voici une fonction pour vous:

Sub DeleteFile(ByVal FileToDelete As String)
   If FileExists(FileToDelete) Then 'See above
      SetAttr FileToDelete, vbNormal
      Kill FileToDelete
   End If
End Sub

Encore une fois, je vais laisser la gestion d'erreur à vous et encore une fois ce sont les choses que je voudrais examiner:

  • Cela doit-il se comporter différemment pour un répertoire ou un fichier? Si un utilisateur doit explicitement indiquer qu'il souhaite supprimer un répertoire?

  • Voulez-vous le code pour réinitialiser automatiquement l'attribut en lecture seule ou si l'utilisateur a donné une sorte d'indication que l'attribut en lecture seule est réglé?

60voto

Mike Woodhouse Points 27748

Une autre façon de coder la réponse de Brettski, avec laquelle je suis entièrement d'accord, pourrait être

 With New FileSystemObject
    If .FileExists(yourFilePath) Then
        .DeleteFile yourFilepath
    End If
End With
 

Même effet mais moins (enfin, pas du tout) de déclarations de variables.

FileSystemObject est un outil vraiment utile et qui mérite d'être mis à l'aise. En dehors de tout le reste, l'écriture de fichier texte est beaucoup plus rapide que l'alternative classique, ce qui peut surprendre quelques personnes. (Dans mon expérience au moins, YMMV).

17voto

JohnFx Points 23761

Je vais probablement me faire flamber pour cela, mais à quoi sert-il de tester l'existence si vous voulez simplement le supprimer? L'un de mes principaux ennemis est une application qui lance une boîte de dialogue d'erreur avec le message "Impossible de supprimer le fichier, il n'existe pas!"

 On Error Resume Next
aFile = "c:\file_to_delete.txt"
Kill aFile
On Error Goto 0
return Len(Dir$(aFile)) > 0 ' Make sure it actually got deleted.
 

Si le fichier n'existe pas, mission accomplie!

13voto

Rich Adams Points 10378

Vous pouvez utiliser les éléments suivants pour vérifier l’existence d’un fichier, puis pour le supprimer.

 Dim aFile As String
aFile = "c:\file_to_delete.txt"
If Len(Dir$(aFile)) > 0 Then
     Kill aFile
End If
 

8voto

Leo Moore Points 1454

En VB c'est normalement Dir pour trouver le répertoire du fichier. Si ce n'est pas vide, il existe et utilisez ensuite Kill pour supprimer le fichier.

 test = Dir(filename)
If Not test="" Then
Kill(Filename)
End If
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X