Comprobar si existe un archivo usando VBA
-
Use la función
Dir()
para verificar si el archivo existe en la computadora usando VBA -
Introducción de comodines en la función
Dir()
para verificar si existe un archivo/s en su computadora usando VBA - Obtenga/Cuente todos los nombres que existen en la computadora usando VBA
VBA es un poderoso lenguaje de programación de computadoras, especialmente cuando se trata de desarrollo de software de escritorio. Una de las proezas de VBA es su capacidad para comunicar y manipular archivos en la computadora.
Este tutorial demostrará cómo verificar si un determinado archivo existe en una determinada ruta. Es una típica lógica obligatoria, especialmente cuando se trata de acceso o manipulación de archivos.
Es una buena práctica verificar primero si existe un archivo antes de continuar. Es para evitar que ocurran errores del sistema, lo que hará que todo el programa se bloquee.
Use la función Dir()
para verificar si el archivo existe en la computadora usando VBA
El bloque de código siguiente muestra cómo comprobar si existe un archivo utilizando la función Dir()
. La función Dir()
es una poderosa herramienta para obtener nombres de carpetas y nombres de archivos utilizando sus rutas de archivo. El bloque de código a continuación contiene una subrutina con un parámetro fileToCheck
. Puede llamar a la subrutina CheckFileExistence
con fileToCheck
como parámetro. El parámetro fileToCheck
será el nombre del archivo o el nombre de la carpeta cuya existencia desea verificar.
Sintaxis:
Dir([pathname],[attributes])
Parámetros:
[pathname] |
Opcional. El nombre de la carpeta, el nombre del archivo o la ruta del archivo que se va a verificar |
[attributes] |
Opcional. Especificará algunos atributos y la función Dir() devolverá los nombres de los archivos en función de esos atributos |
Para [atributos]
, consulte las definiciones a continuación.
vbNormal |
(Predeterminado) Especifica archivos sin atributos. |
vbReadOnly |
Especifica archivos de solo lectura además de archivos sin atributos. |
vbHidden |
Especifica archivos ocultos además de archivos sin atributos. |
vbDirectory |
Especifica directorios o carpetas además de archivos sin atributos. |
vbSystem |
Especifica archivos del sistema además de archivos sin atributos. No disponible en 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")
Salida test1
:
File Exists
Tenga en cuenta que el archivo Book1.xlsx
puede estar en cualquier carpeta de su computadora. Lo bueno de la función Dir()
es que verifica el archivo en cualquier ubicación posible en todas las carpetas de su computadora.
Por lo tanto, si el resultado es File Doesn't Exist
, el nombre del archivo no se usó en ninguna carpeta o archivo en la computadora.
Introducción de comodines en la función Dir()
para verificar si existe un archivo/s en su computadora usando VBA
Además, la función Dir()
permite comodines en sus argumentos. Estos comodines se pueden usar para buscar archivos si no está seguro del nombre exacto del archivo, el nombre de la carpeta y la ruta del archivo que necesita.
La siguiente lista fueron los comodines aceptados por la función Dir()
:
? (signo de interrogación) |
connota cualquier carácter individual. Pueden ser letras o numeros |
* (asterisco) |
Representa cualquier número de caracteres en una fila. |
Ejemplos:
Este bloque de código vba verificará si hay un archivo del tipo de archivo xlsx
. Por lo tanto, usamos el nombre de archivo de búsqueda *.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
Salida test2
:
File Exists
El siguiente código vba verificará si hay un archivo cuyo nombre de archivo tiene solo 2 caracteres en cualquier tipo de archivo. Por lo tanto, usamos ??.*
para buscar nombres de archivos.
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
Salida test3
:
File Exists
Obtenga/Cuente todos los nombres que existen en la computadora usando VBA
Los bloques de código anteriores solo detectan la existencia del archivo sin obtener ninguna información sobre esos archivos. En el bloque de código a continuación, enumeraremos todos los archivos existentes que coincidan con nuestra cadena de nombre de búsqueda.
Para el bloque de código a continuación, la salida será el nombre de archivo de todos los archivos .xlsx
cuyo nombre de archivo tiene de 1 a 4 letras (????.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
salida 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
Por último, el bloque de código a continuación contará todos los archivos existentes que coincidan con nuestra cadena de nombre de búsqueda.
Para el bloque de código a continuación, la salida será el número de todos los archivos .xlsx
en los que el nombre del archivo tiene de 1 a 4 letras (????.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
Salida test5
:
There are 16 existing files matched with the criteria.