Funcionamiento
Esta función nos permite determinar la existencia de un documento dentro de nuestro equipo. En el siguiente ejemplo se utilizará para comprobar la existencia de la ruta del archivo que definimos. Útil cuando se manipulan documentos que ya han sido creados con anterioridad y se quiere comprobar la existencia de alguno.
Para entender mejor el funcionamiento vamos a usar los ejemplos del siguiente documento:
Ejemplo 1:
Definimos el nombre de la función
FileExists(FPath As String) As Boolean
Luego seguimos los siguientes pasos:
Paso 1: Declarar el tipo de variable. La variable “string” se asocia a una secuencia de caracteres que puede incluir letras, números, espacios y signos.
Dim FName As String
Paso 2: Usar la función Dir para obtener el nombre del documento
FName = Dir(FPath)
Paso 3: Aplicar una condición de verdadero o falso dependiendo si existe el documento
If FName <> “” Then FileExists = True _
Else: FileExists = False
Entonces debe quedar así:
Function FileExists(FPath As String) As Boolean
Dim FName As String
FName = Dir(FPath)
If FName <> “” Then FileExists = True _
Else: FileExists = False
End Function
Ahora para comprobar el trabajo realizado, insertamos la función que hemos creado:
(Para mayor visualización de la imagen, hacer click en la misma)
Se obtiene como resultado:
(Para mayor visualización de la imagen, hacer click en la misma)
(En caso de no poder visualizar los resultados se recomienda descargar el documento indicado en la parte inferior del post)
Es importante hacer algunas observaciones:
Caso1: El elemento Dota2.exe no existe dentro de la dirección indicada, por lo que la función da como resultado FALSO.
Caso2: Existe el documento y se encuentra dentro de la dirección indicada; sin embargo, no se ha especificado su extensión por lo que al aplicar la función se obtiene FALSO como resultado.
Caso3: Existe el documento y se encuentra dentro de la dirección indicada, además se indica su extensión “.xlsm” que hace referencia a un libro de excel habilitado para macros. Dado que la dirección y la extensión son correctos, entonces la función da como resultado VERDADERO.
Ejemplo 2:
Ahora podemos programar una macro que aplique la función anterior:
Sub MacroFileExist()
'La función que habíamos definido
If FileExists("C:\Users\usuario 1\Documents\Bryan\Estudios\Cursos\Macros\Tarea\T2\FuncionDir.xlsm") = True Then
MsgBox "File exists."
Else
MsgBox "File does not exist."
End If
End Sub
Nótese que esa dirección corresponde al caso3, en el cual se obtenía VERDADERO como respuesta.
Ejecutamos la macro y observamos el resultado:
(Para mayor visualización de la imagen, hacer click en la misma)
"File Exist" nos indica que el archivo si existe, correspondiente al resultado VERDADERO de la función.
27/09/2014 a las 4:40 pm
Muy buena orientacion
04/03/2017 a las 6:04 pm
Buenas trato de usar pero me genera un error 424 alguien me puede ayudar con esto
Sub CambiarNombres()
Dim NombreViejo As String
Dim NombreViejo1 As String
Dim NombreNuevo As String
Dim NombreNuevo1 As String
Dim NombreRuta As String
ruta = "C:\Aloha\pedidos\"
nombre = Format(Now, "ddmmyyyy")
extencion = ".pdf"
NombreRuta = ruta & nombre & extencion
If My.Computer.FileSystem.File.Exists(NombreRuta) Then
For Each fichero In Range("A2:A2")
NombreViejo = "C:\Aloha\pedidos\" & fichero.Value & ".xlsx"
NombreViejo1 = "C:\Aloha\pedidos\" & fichero.Value & ".pdf"
NombreNuevo = "C:\Aloha\pedidos\" & fichero.Offset(0, 1).Value & ".xlsx"
NombreNuevo1 = "C:\Aloha\pedidos\" & fichero.Offset(0, 1).Value & ".pdf"
Name NombreViejo As NombreNuevo
Name NombreViejo1 As NombreNuevo1
Next fichero
Else
End If
End Sub
09/06/2017 a las 4:21 pm
Hola, a mi me funcionó de maravilla solo tuve que cambiar las comillas dobles en la funcion para que me corriera sin error:
Function FileExists(FPath As String) As Boolean
Dim FName As String
FName = Dir(FPath)
If FName “” Then FileExists = True _
Else: FileExists = False
End Function
17/10/2017 a las 3:31 pm
Sub CambiarNombres()
Dim FName As String
Dim NombreViejo As String
Dim NombreViejo1 As String
Dim NombreNuevo As String
Dim NombreNuevo1 As String
Dim NombreRuta As String
ruta = “C:\Aloha\pedidos\”
nombre = Format(Now, “ddmmyyyy”)
extencion = “.pdf”
NombreRuta = ruta & nombre & extencion
FName = Dir(NombreRuta)
If FName “” Then
For Each fichero In Range(“A2:A2”)
NombreViejo = “C:\Aloha\pedidos\” & fichero.Value & “.xlsx”
NombreViejo1 = “C:\Aloha\pedidos\” & fichero.Value & “.pdf”
NombreNuevo = “C:\Aloha\pedidos\” & fichero.Offset(0, 1).Value & “.xlsx”
NombreNuevo1 = “C:\Aloha\pedidos\” & fichero.Offset(0, 1).Value & “.pdf”
Name NombreViejo As NombreNuevo
Name NombreViejo1 As NombreNuevo1
Next fichero
Else
End If
End Sub
Esa vendria hacer la solucion