Vérifier si un fichier existe à l'aide de VBA
-
Utilisez la fonction
Dir()
pour vérifier si le fichier existe sur l’ordinateur à l’aide de VBA -
Introduction de caractères génériques dans la fonction
Dir()
pour vérifier si un fichier / S existe sur votre ordinateur à l’aide de VBA - Obtenir/compter tous les noms qui existent sur l’ordinateur à l’aide de VBA
VBA est un langage de programmation informatique puissant, en particulier lorsqu’il s’agit de développement de logiciels de bureau. L’une des prouesses de VBA est sa capacité à communiquer et à manipuler des fichiers sur l’ordinateur.
Ce tutoriel montrera comment vérifier si un certain fichier existe dans un certain chemin. C’est une logique incontournable typique, en particulier lorsqu’il s’agit d’accéder ou de manipuler des fichiers.
Il est recommandé de vérifier si un fichier existe avant d’aller plus loin. C’est pour éviter que des erreurs système ne se produisent, ce qui entraînerait le blocage de l’ensemble du programme.
Utilisez la fonction Dir()
pour vérifier si le fichier existe sur l’ordinateur à l’aide de VBA
Le bloc de code ci-dessous montre comment vérifier si un fichier existe à l’aide de la fonction Dir()
. La fonction Dir()
est un outil puissant pour obtenir des noms de dossiers et des noms de fichiers en utilisant leurs chemins de fichiers. Le bloc de code ci-dessous contient une sous-routine avec un paramètre fileToCheck
. Vous pouvez appeler le sous-programme CheckFileExistence
avec fileToCheck
comme paramètre. Le paramètre fileToCheck
sera le nom du fichier ou le nom du dossier dont vous souhaitez vérifier l’existence.
Syntaxe:
Dir([pathname],[attributes])
Paramètres:
[pathname] |
Optionnel. Le nom du dossier, le nom du fichier ou le chemin du fichier à vérifier |
[attributes] |
Optionnel. Spécifiera certains attributs et la fonction Dir() renverra les noms de fichiers en fonction de ces attributs |
Pour [attributes]
, veuillez consulter les définitions ci-dessous.
vbNormal |
(Par défaut) Spécifie des fichiers sans attributs. |
vbReadOnly |
Spécifie les fichiers en lecture seule en plus des fichiers sans attributs. |
vbHidden |
Spécifie les fichiers cachés en plus des fichiers sans attributs. |
vbDirectory |
Spécifie des répertoires ou des dossiers en plus des fichiers sans attributs. |
vbSystem |
Spécifie les fichiers système en plus des fichiers sans attributs. Non disponible sur Macintosh. |
Sub CheckFileExistence(fileToCheck as String)
Dim FileName As String
FileName = Dir(fileToCheck,vbNormal)
If FileName <> "" Then
MsgBox "File Exists"
Else
MsgBox "File Doesn't Exist"
End If
End Sub
Sub test1()
Call CheckFileExistence("Book1.xlsx")
Sortie test1
:
File Exists
Notez que le fichier Book1.xlsx
peut se trouver dans n’importe quel dossier de votre ordinateur. La bonne chose à propos de la fonction Dir()
est qu’elle vérifie le fichier à n’importe quel endroit possible sur tous les dossiers de votre ordinateur.
Ainsi, si le résultat est File Doesn't Exist
, le nom du fichier n’a été utilisé dans aucun dossier ou fichier sur l’ordinateur.
Introduction de caractères génériques dans la fonction Dir()
pour vérifier si un fichier / S existe sur votre ordinateur à l’aide de VBA
De plus, la fonction Dir()
autorise les caractères génériques sur ses arguments. Ces caractères génériques peuvent être utilisés pour rechercher des fichiers si vous n’êtes pas certain du nom de fichier exact, du nom de dossier et du chemin de fichier dont vous avez besoin.
La liste ci-dessous répertorie les jokers acceptés par la fonction Dir()
:
? (point d’interrogation) |
connote n’importe quel caractère unique. Il peut s’agir de lettres ou de chiffres |
* (astérisque) |
Il représente n’importe quel nombre de caractères dans une rangée. |
Exemples:
Ce bloc de code vba vérifiera s’il existe un fichier du type de fichier xlsx
. Ainsi, nous utilisons le nom de fichier de recherche xlsx
.
Sub CheckFileExistence(fileToCheck as String)
Dim FileName As String
FileName = Dir(fileToCheck,vbNormal)
If FileName <> "" Then
MsgBox "File Exists"
Else
MsgBox "File Doesn't Exist"
End If
End Sub
Sub test2()
Call CheckFileExistence("*.xlsx")
End Sub
test2
Résultat :
File Exists
Le code vba ci-dessous vérifiera s’il existe un fichier dont le nom de fichier ne comporte que 2 caractères dans n’importe quel type de fichier. Ainsi, nous utilisons ??.*
pour rechercher les noms de fichiers.
Sub CheckFileExistence(fileToCheck as String)
Dim FileName As String
FileName = Dir(fileToCheck,vbNormal)
If FileName <> "" Then
MsgBox "File Exists"
Else
MsgBox "File Doesn't Exist"
End If
End Sub
Sub test3()
Call CheckFileExistence("??.*")
End Sub
test3
Résultat :
File Exists
Obtenir/compter tous les noms qui existent sur l’ordinateur à l’aide de VBA
Les blocs de code ci-dessus détectent simplement l’existence du fichier sans obtenir aucune information concernant ces fichiers. Dans le bloc de code ci-dessous, nous allons lister tous les fichiers existants correspondant à notre chaîne de nom de recherche.
Pour le bloc de code ci-dessous, la sortie sera le nom de fichier de tous les fichiers .xlsx
dont le nom de fichier est composé de 1 à 4 lettres (????.xlsx
).
Sub ListAllFiles(fileToCheck As String)
Dim FileName As String
FileName = Dir(fileToCheck, vbNormal)
Do While FileName <> ""
Debug.Print FileName
FileName = Dir()
Loop
End Sub
Sub test4()
Call ListAllFiles("????.xlsx")
End Sub
Sortie test4
:
ATIC.xlsx
CS.xlsx
Data.xlsx
EA65.xlsx
edge.xlsx
fe10.xlsx
FV3P.xlsx
G!.xlsx
GZ7P.xlsx
HE6P.xlsx
IF.xlsx
IF27.xlsx
Lot.xlsx
SR.xlsx
Test.xlsx
WOP.xlsx
Enfin, le bloc de code ci-dessous comptera tous les fichiers existants correspondant à notre chaîne de nom de recherche.
Pour le bloc de code ci-dessous, la sortie sera le nombre de tous les fichiers .xlsx
dans lesquels le nom de fichier est de 1 à 4 lettres (????.xlsx
).
Sub CountAllFiles(fileToCheck As String)
Dim FileName As String
Dim fileCnt As Long
FileName = Dir(fileToCheck, vbNormal)
Do While FileName <> ""
fileCnt = fileCnt + 1
FileName = Dir()
Loop
Debug.Print "There are " & fileCnt & " existing files matched with the criteria."
End Sub
Sub test5()
Call CountAllFiles("????.xlsx")
End Sub
Sortie test5
:
There are 16 existing files matched with the criteria.