À l’aide de VBA, comment puis-je (a) vérifier si un fichier existe et, le cas échéant, (b) le supprimer?
Réponses
Trop de publicités?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é?
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).
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!