Comprobar si existe un archivo usando VBA

Glen Alfaro 30 enero 2023
  1. Use la función Dir() para verificar si el archivo existe en la computadora usando VBA
  2. Introducción de comodines en la función Dir() para verificar si existe un archivo/s en su computadora usando VBA
  3. Obtenga/Cuente todos los nombres que existen en la computadora usando VBA
Comprobar si existe un archivo 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.

Artículo relacionado - VBA File