Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Función FileLen en VBA

| 6 comentarios

La función "FileLen" en VBA sirve para hallar el tamaño de un archivo.

Esta recibe como parámetro una expresión tipo string (cadena de caracteres) que especifica la ubicación de un archivo.

Y, devuelve como resultado un valor de tipo long, que contiene la longitud de dicho archivo en bytes.

Ejemplo:

tamArch = FileLen( nArch)

     -  nArch (el parámetro de la función) es la ubicación de un archivo; por ejemplo, "D:\Users\Alvaro\Documents\ARTE.doc"

     -  tamArch es el tamaño del archivo ingresado como parámetro; en este caso, 211456 bytes

La ubicación del archivo debe ser exacta, ya que si se ingresa como parámetro un archivo que no existe, se producirá un error.

En caso, se ingrese la ruta de un archivo que se encuentre abierto, cuando se llame a la función FileLen, el valor devuelto será el último tamaño del archivo cuando se guardó por ultima vez en el disco.

Ejemplo dentro de una función:

Function HallaTamanoDeArchivoEnBytes(nArch)

resultado = FileLen(nArch)

HallaTamanoDeArchivoEnBytes = resultado

MsgBox "El tamaño del archivo " & nArch & " , en bytes, es el sgte.: " & resultado

End Function

La función HallaTamanoDeArchivoEnBytes recibe como parámetro el nombre del archivo (nArch), que sería un string y devuelve un long (resultado).  Además, muestra un mensaje indicando lo siguiente: "El tamaño del archivo " & nArch & " , en bytes, es el sgte.: " & resultado . Esto es para que el usuario compruebe si el archivo que ingresó es el correcto, ya que el mensaje muestra el nombre del archivo ingresado junto a su tamaño.

Función FileLen ejemplo

función filelen vba 01

función filelen vba 02

función filelen vba 04

(Para mayor visualización de la imagen, hacer click en la misma)

 

Nombre: Álvaro Diego Llano Castañeda

6 comentarios

  1. Estimados, el siguiente codigo para poder ejecutar esta funcion como una macro:

    Function Tamaño_Archivo(ruta)

    tamaño = FileLen(ruta)
    Tamaño_Archivo = tamaño
    MsgBox (tamaño)

    End Function

    Sub Macro_Calcular_Tamaño_Archivo_Bytes()

    Range("c5") = Tamaño_Archivo(Range("b5"))

    End Sub

  2. Es posible unir la función "FileLen" con el "FileDialog" y de esta manera optimizar la búsqueda la de la ruta del archivo?
    Y en que ocación es útil conocer el tamaño del archivo en Bytes?
    Como los transformo en MegaBytes?

    • Realizando una regla de tres con las siguientes referencias.
      Tabla de Referencia
      8 Bit = 1 Byte
      1024 Byte = 1 Kbyte
      1024 KByte = 1 MegaByte
      1024 MByte = 1 GigaByte
      1024 GByte = 1 TeraByte
      1024 Terabytes = 1 Petabyte

  3. Sería posible usar esta función FileLen para configurar la importación máxima de datos (tipo datos de varias hojas de calculo) a una macro?

  4. Es increible la cantidad de cosas que se puede hacer con macros, esto del tamaño del archivo a mi solo se me ocurria buscarlo en la opcion de propiedades, sin embargo seria útil, se me ocurre para controlar el espacio disponible en discos duros extraibles o en memorias USB, de esta manera conocería por un lado si puedo o no copiar determinados archivos, también para el envio de archivos por correo electrónico.

  5. Buenas tardes.

    Bajé el archivo adjunto de esta web, que contiene el macro HallaTamanoDeArchivoEnBytes.

    Pasé una planilla que uso habitualmente para listar archivos de trabajo, a la planilla del ejemplo adjunto, ya que necesitaba calcular el tamaño de los archivos listados.

    Al ajustar el directorio, me dio el resultado de los tamaños correctamente, pero solamente hasta archivos de 2 GB.

    Después, los archivos mayores a 2 GB o bien me calcula mal el tamaño o me da valores negativos.

    Conoces el error que puede estar generando esto?
    Tenes algún archivo modelo que ya esté corregido este error?

    Te comento que uso excel básico y no estoy interiorizado con el uso de macros.

    Agradezco tu respuesta,
    saludos
    Alejandro

Deja una respuesta

Los campos requeridos estan marcados con *.