El objeto FileSystemObject, lo hemos visto ya en algunos de los artículos de este blog, pero hoy nuevamente, vamos a ver algunas de sus posibilidades. Con el objeto FileSystemObject, podemos hacer muchas cosas, en realidad muchas más de las que veréis en este blog. Muchas de esas cosas no las explicaré, porque pueden ser utilizadas de forma maliciosa por parte de algunos usuarios.
En esta entrega, vamos a ver como podemos averiguar si existe determinado fichero, ya sea de excel, o de cualquier otro tipo (una imagen, un archivo de word, un archivo pdf, etc.), sin necesidad de buscarlo de forma " manual " a través del explorador de archivos.
Aquí os dejo el código necesario, para determinar si existe un fichero. Lo copiaremos en un módulo VBA:
Sub comprobar_si_existe_el_fichero() 'Creamos el objeto FileSystemObject Set archivo = CreateObject("Scripting.filesystemObject") 'Creamos una variable para que el usuario introduzca la 'ruta y el nombre del archivo a buscar ruta_y_archivo = InputBox("Introduce la ruta y el nombre del archivo" & _ Chr(13) & Chr(13) & Chr(13) & Chr(13) & Chr(13) & "Por ejemplo:", _ "Ruta y archivo", "C:\Mis documentos\ejemplo.xls") 'Comprobaremos si existe o no el archivo, y dependiendo 'del resultado, mostraremos un mensaje u otro If ruta_y_archivo <> "" Then If archivo.FileExists(ruta_y_archivo) Then 'Si el fichero existe, mostramos un mensaje respuesta = MsgBox("El archivo sí que existe.", vbInformation, "Resultado") Else 'Si el fichero no existe, mostramos otro mensaje distinto respuesta = MsgBox("El archivo no existe.", vbInformation, "Resultado") End If End If 'limpiamos el objeto Set archivo = Nothing End Sub |
Al ejecutar ese macro, se nos mostrará un InputBox, donde deberemos introducir la ruta y el nombre del fichero cuya existencia queremos averiguar:
Y una vez hayamos pulsado sobre el botón de aceptar, nos mostrará un mensaje a través de un MsgBox, tanto si existe como si no, el fichero en cuestión (en la siguiente imagen se muestra el mensaje, en el caso de existir el fichero buscado):
5 comentarios:
Muy interesante el uso de este objeto. Yo estoy interesado en algo más sencillo ya que tengo una tienda en línea y semanalmente me envían los proveedores las existencias de los productos. Conforme trabajo los productos voy agregando la fotografía en un directorio de imagenes. Lo que necesito es una funcion que me diga si existe un archivo o no para codigo de producto que ingreso. Ejemplo codigo de producto hp530. foto hp530.jpg Debería tener una funcion en alguna celda donde me indicara si existe o no el nombre del archivo que estoy colocando.
Gracias
Rolando Maldonado
Como parece interesante el tema, vamos a adaptar eso a una función.
Copia y pega este código en un módulo:
Function buscarfoto(foto As String)
'Creamos el objeto FileSystemObject
Set archivo = CreateObject("Scripting.filesystemObject")
'Creamos una variable para buscar la foto en la
'carpeta donde tenemos las imágenes, y le añadimos la extensión "jpg"
ruta_y_archivo = "C:\Mis documentos\img\" & foto & ".jpg"
'Comprobaremos si existe o no el archivo, y dependiendo
'del resultado, mostraremos un mensaje u otro
If ruta_y_archivo <> "" Then
If archivo.FileExists(ruta_y_archivo) Then
'Si el fichero existe, mostramos un mensaje
respuesta = "Foto OK"
Else
'Si el fichero no existe, mostramos otro mensaje distinto
respuesta = "Falta la foto"
End If
End If
'limpiamos el objeto
Set archivo = Nothing
'pasamos el dato a la función
buscarfoto = respuesta
End Function
Cambia la ruta donde tengas las fotos.
Para llamar a la función, tan solo debes hacerlo introduciendo el nombre del producto entre comillas y sinla extensión, como en el siguiente ejemplo:
=buscarfoto("hp530")
Con esto y un bizcocho, hasta mañana a las ocho. Por cierto, si te ha sido de utilidad, puedes mandarme la nueva ipaq HP 614c, by the face :-)
Q bueno que exista gente como tu Javier, tus blogs me estan ayudando muchisimo... como dices en alguno de ellos son generalidades, ya depende de nosotros el buscarle mas y explotar mas nuestro excel... no todo nos lo vas a dar masticadito no???? :) seguire explorando.
Jesica
Muchas gracias por tu comentario Jesica. Si no fuera porque ya tengo una edad, hasta podría sonrojarme por tu comentario ;-)
La verdad es que a estas horas de un lunes, se agradecen muestras de apoyo como la tuya.
Un saludo.
Y ya para rizar el rizo;
Si trabajamos con documentos *.docx y tras buscarlo no lo encontramos, ¿como lo crearíamos mediante código?
Publicar un comentario