Descargar archivo web en 3 simples pasos VBA

En ocasiones vamos a tener la necesidad de descargar archivo o archivos de una web con VBA, ya sean imágenes, videos, documentos, música, etc.

Ingresando directamente a la URL, podemos descargar documentos que por defecto se descargan a una carpeta por defecto.

Hasta la fecha la manera más apropiada que he encontrado para descargar archivos desde VBA es utilizando la API URLDownloadToFile

Paso 1

Lo primero que realizamos es crear un módulo, y en él agregamos el siguiente código al inicio

La cual va a hacer la llamada a la función URLDownloadToFile para plataformas de 32 y 64bits

Para una mayor descripción del la función URLDownloadToFile, consultar el siguiente enlace:
CLIC AQUÍ

Paso 2

Ahora procedemos a crear nuestra instrucción para descargar archivos de internet, la cual la podemos hacer de la siguiente forma

Argumentos:

  • pCaller (Primer argumento): El puntero de interfaz lo definimos en cero, debido a que no es una llamada desde un control Activex.
  • szURL (Segundo argumento): Debemos colocar la URL de descargar, debe tener la siguiente forma: “//tutorialesexcel.com/…/archivo_a_descargar.extensión”, no olvidar que en la parte final del URL, debe estar el archivo a descargar.
  • szFileName (Tercer argumento): La ubicación en nuestra PC en donde se descargará, similar al segundo argumento, debe tener el nombre de archivo, por ejemplo “D:\archivodescargado.xlsm”, el nombre que coloquemos después del “\” será el nombre que se le asignará al archivo descargado.
  • dwReserved (Cuarto argumento): Reservado, siempre debe ser 0
  • lpfnCB (Quinto argumento): Devuelve el estado de la descarga, si el valor es 0, no nos devolverá el estado

Paso 3

Un consejo que te doy es realizar un manejo de errores, el cual lo podemos realizar de esta forma

Si tenemos un bucle lo ideal sería no mostrar ningún mensaje

Puedes descargar el archivo: Ejemplo de archivo

Nota:
La función FileLen te ayuda a saber el tamaño de un archivo, puedes leer su uso en este link: Link

Cualquier duda o pregunta, me la puedes realizar en los comentarios o enviar un correo a luisrojas@tutorialesexcel.com

Dejar un comentario