Una guía para trabajar con libros de trabajo en vba

En Excel, un libro es uno de los objetos de Excel más importantes y también es esencial comprender cómo usar y hacer referencia a los libros al escribir códigos VBA.

En este tutorial, exploraremos todo lo que necesita saber. Pero lo primero que debe comprender son los objetos involucrados al trabajar con libros en VBA.

Cosas que saber:

  • Objeto de carpetas
  • Objeto de carpeta

Estos dos objetos suenan igual, pero existe una diferencia fundamental entre los dos.

Objeto de carpetas

En VBA, el objeto Libros representa la colección de libros abiertos en Microsoft Excel. Imagina que tienes diez archivadores abiertos al mismo tiempo. Y desea consultar el único libro de trabajo entre ellos. En este caso, debe utilizar el objeto del libro de trabajo para hacer referencia a este libro de trabajo usando su nombre.

vba workbooks object

Objeto de carpeta

En VBA, el objeto del libro de trabajo representa un único libro de trabajo entre todos los libros abiertos actualmente en Microsoft Excel. La mejor manera de entender esto es pensar en declarar una variable como un carpeta que desea usar para hacer referencia a una carpeta particular en el código.

represents one single workbook

Enlaces útiles : Agregar una pestaña de Desarrollador | Editor Visual Básico | Ejecutar una macro | Libro de trabajo de macros personales

Consulte un libro de trabajo en VBA

Para trabajar con libros en VBA, lo primero que necesita saber es cómo hacer referencia a un libro en una macro. Esto es lo bueno: hay varias formas de hacer referencia a un libro de trabajo. Y en el futuro, exploraremos cada uno de ellos.

1. Por nombre

La forma más sencilla de referirse a un libro es por su nombre. Supongamos que desea activar el libro de trabajo Book1.xlsx, en este caso el código que debe utilizar debe ser el siguiente:

refer to a workbook in vba by name

Hacer referencia a un libro de trabajo con su nombre es bastante simple, es necesario especificar el nombre y listo. Pero aquí hay una cosa de la que debe ocuparse : si un libro no se guarda, debe usar solo el nombre. Y si está registrado deberá utilizar el nombre con la extensión.

2. Por número

Cuando abre un libro, Excel asigna un número de índice a ese libro y puede usar ese número para hacer referencia a un libro. El libro que abrió primero tendrá el número de índice «1» y el segundo tendrá el «2», y así sucesivamente.

refer to a workbook in vba b number

Este método puede parecerle menos real porque es difícil saber qué libro está en qué número de índice. Pero hay una situación en la que este método es muy útil: recorrer todos los libros abiertos.

3. Por este libro de trabajo

Este libro de trabajo es una propiedad que le ayuda a consultar el libro de trabajo en el que escribe el código. Supongamos que escribe el código en «Libro1» y usa ThisWorkbook para guardar el libro. Ahora, incluso cuando cambie el nombre del libro, no necesitará cambiar el código.

refer to a workbook in vba by this workbook

El código anterior cuenta la cantidad de hojas en el libro donde está escrito este código y muestra un cuadro de mensaje con el resultado.

4. Por ActiveWorkbook

Si desea hacer referencia a un libro de trabajo activo, debe utilizar la propiedad «ActiveWorkbook». El mejor uso de esta propiedad es cuando está seguro de qué libro está activado ahora. O ya ha activado el libro de trabajo en el que desea trabajar.

by active workbook

El código anterior primero activa el libro «Libro1», luego usa la propiedad del libro activo para guardar y cerrar el libro activo.

Accede a todos los métodos y propiedades.

En VBA, cada vez que hace referencia a un objeto, VBA le permite acceder a las propiedades y métodos proporcionados con ese objeto. De manera similar, el objeto del libro de trabajo viene con propiedades y métodos. Para acceder a él, primero debe definir el libro de trabajo y luego ingresar un punto .

define the workbook first and enter a dot

En el momento en que escribe un punto (.), se muestra la lista de propiedades y métodos. Ahora debes tener una pregunta sobre cómo identificar cuál es una propiedad y cuál es un método.

Aquí está el truco. Si miras de cerca, puedes identificar un ladrillo verde en movimiento y una mano gris delante de cada nombre de la lista. Entonces todas las propiedades tienen esta mano gris antes del nombre y los métodos tienen un ladrillo verde en movimiento.

Por ejemplo, para utilizar un método con un libro de trabajo

Imagine que desea cerrar un libro de trabajo (que es un método), debe escribir o seleccionar «Cerrar» de la lista.

select close from a list

Después de eso, debe ingresar paréntesis iniciales para que IntelliSense sepa qué argumentos debe establecer.

enter starting parentheses

Con el método close necesitas definir tres argumentos y, como puedes ver, todos estos argumentos son opcionales y puedes ignorarlos si lo deseas. Pero algunos métodos no tienen argumentos (por ejemplo: activar)

Por ejemplo, para utilizar una propiedad con un libro de trabajo

Imagina que quieres contar las hojas del libro “libro1”. En este caso, debe usar la propiedad «Hojas» y luego la propiedad de recuento adicional.

use the sheets property

En el código anterior, como dije, configura libro1, luego la propiedad de hoja se refiere a todas las hojas, luego la propiedad de recuento para contarlas. Y cuando ejecuta este código, le muestra un cuadro de mensaje con el resultado.

Usando la declaración «CON» con el libro de trabajo

En VBA, hay una declaración «Con» que puede ayudarle a trabajar con un libro mientras escribe una macro de manera eficiente. Veamos el siguiente ejemplo donde tiene tres líneas de código diferentes con el mismo libro de trabajo, es decir, ActiveWorkbook.

using with statement with workbook

Con la declaración «WITH», puede consultar el libro activo solo una vez y utilizar todas las propiedades y métodos que tiene en el código.

  • Primero, debe comenzar con la declaración inicial «Con ActiveWorkbook» y finalizar la declaración con «Terminar con».
start with the starting statement
  • Después de eso, debes escribir el código entre esta declaración que tienes en el ejemplo anterior.
write the code between the statement

Como puede ver en el código anterior, nos hemos referido al de ActiveWorkbook usando la declaración CON y luego se deben usar todas las propiedades y métodos.

 Sub vba_activeworkbook_with_statement() With ActiveWorkbook .Sheets.Add Count:=5 .Charts.Visible = False .SaveAs ("C:UsersDellDesktopmyFolderbook2.xlsx") End With End Sub

Déjame darte un ejemplo sencillo y concreto para que lo entiendas todo. Imagina que me pides que vaya a la habitación 215 a buscar la botella de agua, y cuando regreso me envías nuevamente a la habitación 215 a buscar un bolígrafo, luego me envías nuevamente a buscar una computadora portátil. Ahora aquí está la cuestión: todas las cosas que me dijiste que consiguiera están en la habitación 215. Así que sería mejor si me enviaras a la habitación 215 y me dijeras que consiguiera las tres cosas a la vez.

Leer: Con – Terminar con

Declarar una variable como un libro de trabajo

A veces es necesario declarar una variable como carpeta para utilizarla más en el código. Bueno, no requiere nada especial de tu parte.

declare variable as workbook
  1. Utilice la declaración DIM (declarar).
  2. Escribe el nombre de la variable.
  3. Establezca el tipo de variable en Libro de trabajo.

Lidiando con los errores

Cuando trabaje con uno o más objetos de libro en VBA, es posible que también necesite manejar errores. Tomemos un ejemplo del error «Error de tiempo de ejecución 9: Índice fuera de rango» . Este error puede ocurrir por varias razones.

  • El libro de trabajo al que intenta hacer referencia no está abierto.
  • Quizás escribiste mal el nombre.
  • El libro al que te refieres aún no está guardado y estás usando la extensión con el nombre.
  • Si está utilizando el número de índice para hacer referencia a un libro de trabajo y el número que utilizó es mayor que el número total de libros de trabajo abiertos.

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *