Excel VBA FreeFile

¿Con qué frecuencia, como usuario de Excel, abre un archivo y trabaja en el mismo? Con mucha frecuencia, ¿verdad? De nuevo, es posible automatizar las tareas de abrir el archivo en Excel usando una poderosa herramienta VBA que le permite escribir macros y, en última instancia, automatiza todas las tareas comenzando por abrir un archivo desde una ubicación determinada para usarlo, guardarlo y cerrarlo en el mismo camino. Al hablar sobre la automatización del proceso de apertura y cierre de archivos a través de VBA, es muy importante indexar el archivo para que el sistema pueda identificar qué archivo usar en el momento de la ejecución. Tenemos una función disponible dentro de VBA llamada FreeFile que sirve para este propósito.

¿Qué es la función VBA FreeFile?

VBA FreeFile es una función que se clasifica en función de VBA que permite que el sistema reserve un número para el siguiente archivo que se abrirá en VBA File Input Output para una experiencia de codificación fluida y reducir errores innecesarios en su código. Cuando abre un archivo a través de VBA File IO (Input / Output), se vuelve absolutamente obligatorio asignar un número único a ese archivo porque puede tener múltiples archivos en la ubicación que está a punto de leer, escribir y abrir a través de su código. ¿Cómo sabe el sistema qué archivo de todos los que desea abrir? La función VBA FreeFile identifica el número único que asignamos al archivo y lo pone a su disposición para abrir, leer o escribir en VBA.

La sintaxis para la función FreeFile es la siguiente:

Esta función solo toma un argumento RangeNumber que tiene los valores estándar como cero (0) y uno (1). Si especifica cero, el número de archivo se asignará a través del rango de números 1 a 255 por pasos para cada archivo que abra. Si especifica uno, el número de archivo se asignará a través del rango de 256 a 511 por pasos para cada archivo que abra. Si no se especifica RangeNumber, se considerará cero por defecto.

¿Cómo usar la función FreeFile en Excel VBA?

A continuación se muestran los diferentes ejemplos para usar la función FreeFile en Excel VBA.

Puede descargar esta plantilla VBA FreeFile Excel aquí - Plantilla VBA FreeFile Excel

VBA FreeFile - Ejemplo # 1

Siga los pasos a continuación para usar la función FreeFile en Excel VBA.

Paso 1: Abra un nuevo Editor de Visual Basic (VBE) haciendo clic en el botón de Visual Basic en la pestaña Desarrollador presente en su archivo de Excel o presionando el botón Alt + F11 simultáneamente.

Paso 2: inserte un nuevo módulo en el VBE. Haga clic en el botón Insertar . Seleccione Módulo de la lista de opciones disponibles en Insertar.

Paso 3: defina un nuevo subprocedimiento que pueda contener su macro.

Código:

 Sub Ejemplo_1 () End Sub 

Paso 4: Defina dos nuevas variables, archivo_1 y archivo_2 como un entero. Estas dos variables contendrán los números que asignamos a cada archivo que abrimos en toda la macro.

Código:

 Sub Ejemplo_1 () Dim archivo_1 Como entero Dim archivo_2 Como entero Fin Sub 

Paso 5: utilice el operador de asignación para asignar el valor entero 1 a la variable file_1 con la ayuda de VBA FreeFile.

Código:

 Sub Ejemplo_1 () Dim archivo_1 Como entero Dim archivo_2 Como entero Archivo_1 = FreeFile End Sub 

Paso 6: Ahora, use la instrucción Open que se puede usar para abrir un archivo en VBA.

Código:

 Sub Ejemplo_1 () Dim archivo_1 como entero Dim archivo_2 como entero archivo_1 = FreeFile Abra "D: \ Excel Content Writing \ TextFile_1.txt" para la salida como archivo_1 End Sub 

Aquí, hemos especificado la ruta en la que se encuentra el archivo. La instrucción For le ofrece opciones como cómo desea abrir el archivo (por ejemplo, como salida) y la instrucción As especifica el número de archivo que hemos especificado utilizando la instrucción FreeFile.

Paso 7: siga los pasos 5 y 6 para asignar un nuevo número al segundo archivo a través de la variable file_2 y abrirlo .

Código:

 Sub Ejemplo_1 () Dim archivo_1 como número entero Dim archivo_2 como número entero file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" Para la salida Como file_1 file_2 = FreeFile Open "D: \ Excel Content Writing \ TextFile_2.txt" Para la salida Como file_2 End Sub 

Paso 8: Ahora, nos gustaría ver los números que realmente están asignados a ambos archivos de texto. Puede ejecutar cada línea una por una con la ayuda de la tecla F8. Sin embargo, la salida no será visible para usted. Ni en el archivo de Excel ni en la ventana Inmediato. Agregue la siguiente instrucción MsgBox que muestra un cuadro de mensaje con los números de cada archivo.

Código:

 Sub Ejemplo_1 () Dim archivo_1 como número entero Dim archivo_2 como número entero file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" Para la salida Como file_1 file_2 = FreeFile Open "D: \ Excel Content Writing \ TextFile_2.txt" Para la salida Como file_2 MsgBox "El valor para file_1 es:" & file_1 & Chr (13) & "El valor para file_2 es:" & file_2 End Sub 

En esta línea de código, la primera línea del cuadro de mensaje contendrá el texto "valor para archivo_1 es:" y el valor numérico asignado mediante la función FreeFile. Chr (13) permite que aparezca la siguiente línea. La siguiente línea del cuadro de mensaje leerá "El valor para el archivo_2 es:" y el número asignado al segundo archivo.

Paso 9: ejecute este código presionando el botón Ejecutar o presionando la tecla F5.

Así es como la función FreeFile le permite asignar el número al archivo que va a abrir, leer y cerrar a través de VBA.

VBA FreeFile - Ejemplo # 2

Si cerramos el archivo que abrimos cada vez, entonces el nuevo archivo que abrimos siempre tendrá un número de serie como 1 cada vez que se abra. Siga los pasos a continuación para verlo.

Paso 1: defina un nuevo subprocedimiento que pueda contener su macro.

Código:

 Sub Ejemplo_2 () End Sub 

Paso 2: defina dos variables file_1 y file_2 como un número entero dentro del subprocedimiento recién definido.

Código:

 Sub Ejemplo_2 () Dim archivo_1 como entero Dim archivo_2 como entero Fin Sub 

Paso 3: Ahora, use FreeFile para asignar un número al archivo dado y la instrucción Open para abrir ese archivo a través de la ubicación en la que lo tenemos.

Código:

 Sub Ejemplo_2 () Dim archivo_1 como entero Dim archivo_2 como entero file_1 = FreeFile Abra "D: \ Excel Content Writing \ TextFile_1.txt" para la salida como archivo_1 End Sub 

Paso 4: use una instrucción MsgBox para agregar un cuadro de mensaje para el número de los primeros archivos.

Código:

 Sub Ejemplo_2 () Dim archivo_1 como entero Dim archivo_2 como entero file_1 = FreeFile Abra "D: \ Excel Content Writing \ TextFile_1.txt" Para la salida como file_1 MsgBox "El valor para file_1 es:" & file_1 End Sub 

Paso 5: use una instrucción Cerrar para cerrar el primer archivo que abrió a través de VBA.

Código:

 Sub Ejemplo_2 () Dim archivo_1 como entero Dim archivo_2 como entero file_1 = FreeFile Abra "D: \ Excel Content Writing \ TextFile_1.txt" Para la salida como file_1 MsgBox "El valor para file_1 es:" & file_1 Cerrar archivo_1 End Sub 

Paso 6: Ahora, siga el mismo procedimiento que en el Paso 5, Paso 6, Paso 7 pero para el segundo archivo. Incluye asignar un valor a la variable file_2 usando la función FreeFile y abrirlo con la ayuda de la instrucción Open, usando MsgBox para mostrar el número de archivo para el segundo archivo y finalmente cerrar el segundo archivo.

Código:

 Sub Ejemplo_2 () Dim archivo_1 como entero Dim archivo_2 como entero file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" Para salida como file_1 MsgBox "El valor para file_1 es:" & file_1 Cerrar archivo_1 file_2 = FreeFile Open "D : \ Excel Content Writing \ TextFile_2.txt "Para salida como file_2 MsgBox" El valor para file_2 es: "& file_2 Cerrar file_2 End Sub 

Paso 7: Ejecute este código presionando el botón Ejecutar o F5.

El primer cuadro de mensaje representa el valor del archivo_1 que parece ser 1. El segundo cuadro de mensaje representa el valor del archivo_2 que también parece ser 1. Este cambio está ahí porque hemos usado la declaración de cierre para cerrar los archivos uno por uno. Debido a lo cual, al iniciar un nuevo archivo, cada vez que el archivo anterior y su número desaparecen de la memoria del sistema, el siguiente archivo se considerará como un archivo nuevo con números que comienzan desde 1.

Cosas para recordar

  • FreeFile devuelve un número entero único a cada archivo que abrimos, leemos y cerramos a través de VBA File IO.
  • FreeFile tiene dos valores para el argumento RangeNumber (que es opcional). Cero generalmente asigna el número entre el rango de 1 a 255 y uno asigna los números de 256 a 511.

Artículos recomendados

Esta es una guía para VBA FreeFile. Aquí discutimos cómo la función FreeFile le permite asignar el número al archivo que va a abrir, leer, cerrar a través de Excel VBA junto con ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. El archivo de verificación de VBA existe | Plantilla de Excel
  2. VBA Subíndice fuera de rango (Ejemplos)
  3. Función GetObject en Excel VBA
  4. ¿Cómo utilizar el formato de número en VBA?
  5. VBA Environ

Categoría: