¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Macros y lenguaje VBA
  3. Manipular libros
Extrait - Macros y lenguaje VBA Descubra la programación en Excel (nueva edición)
Extractos del libro
Macros y lenguaje VBA Descubra la programación en Excel (nueva edición) Volver a la página de compra del libro

Manipular libros

Objetivos del capítulo

Después de haber hablado de las celdas y luego de las hojas, este capítulo nos permitirá hablar de los libros.

Primero encontrará la colección Workbooks, y luego los dos objetos ActiveWorkbook y ThisWorkbook. A continuación, explicaremos las propiedades y métodos del objeto Workbook. Después, conocerá los eventos del libro y, por último, una serie de ejercicios le ayudarán a poner en práctica sus nuevos conocimientos.

Colección de libros de la aplicación: Workbooks

Cuando se trabaja en Excel, cada libro es un objeto de tipo Workbook, y todos los libros se encuentran en una colección llamada Workbooks. Puede navegar por esta colección Workbooks para apuntar al libro que desee. También puede utilizar la colección Sheets. Tanto si se trata de archivos de Excel como de archivos txt, csv o xml, todos estos libros aparecerán en la colección Workbooks.

A continuación, encontrará algunos ejemplos de programas para trabajar con el objeto Workbooks.

Mostrar la lista de libros

Cuando trabaja con Excel, puede ser interesante conocer la lista de libros. El siguiente código recorre cada elemento de la colección Workbooks mostrando el nombre de cada libro.

Sub ListaDeLibros() 
   Dim Libro As Workbook 
   For Each Libro in Workbooks 
       'Muestra el nombre del libro 
       MsgBox Libro.Name 
   Next 
End Sub 

Ejemplo 1: recorrer la colección Workbooks para leer la lista de libros abiertos

Conocer el número de libros abiertos: Count

Para saber el número de libros abiertos en la aplicación Excel, basta con usar la propiedad Count de Workbooks, que devuelve un valor numérico.

'Muestra el número de libros 
MsgBox Workbooks.Count...

Objeto libro: Workbook

En esta sección aprenderá más sobre lo que es un libro para VBA y cómo utilizarlo según sus necesidades. El tipo de objeto que representa un libro es Workbook en VBA. Cada libro forma parte de la colección Workbooks cuando está abierto.

Libros en la interfaz VBE

Cuando trabaja con libros de Excel, puede verlos en el Explorador de Proyectos en VBE.

images/cap15_img_01.png

Para cada uno de los libros abiertos, verá su nombre entre paréntesis junto con el del proyecto (VBAProject es el nombre del proyecto predefinido).

 Para modificar el nombre del proyecto, en la ventana Propiedades cambie la propiedad Name.

Libro activo y aquel que contiene el código VBA: ActiveWorkbook y ThisWorkbook

Tal y como vio en los capítulos Manipular celdas de Excel y Manipular hojas de Excel, existe un objeto VBA ActiveWorkbook que apunta al libro activo. Al igual que solo puede haber una celda y una hoja activas, solo puede haber un libro activo.

'Mostrar el nombre del libro y hoja activa en la ventana Inmediato 
Debug.Print ActiveWorkbook.Name & " "  & ActiveSheet.Name 

Ejemplo 8: usar el libro activo a través del objeto ActiveWorkbook

El otro objeto visible en la imagen anterior es el objeto ThisWorkbook. Este objeto se refiere al libro en el que se ejecuta el código VBA.

Declarar un objeto Workbook

Al igual que en el caso del objeto Worksheet, la declaración de un objeto Workbook es sencilla.

Dim wbk As Workbook 

Ejemplo 9: declarar una variable de tipo Workbook

Asignar un objeto Workbook

Al igual que en el caso del objeto Worksheet, antes de poder utilizar la variable de tipo Workbook que acaba de declarar, deberá asignarla.

Hay al menos cuatro formas de asignar un valor a esta variable.

Asignar a partir del índice del libro

Se puede apuntar a un libro en Excel desde su posición de apertura en la aplicación Excel....

Eventos en los libros

Después de hablar de las propiedades y los métodos del libro, pasamos a los eventos.

Gestión de eventos en el Editor de Visual Basic

 En el Editor de Visual Basic, para acceder a los eventos del libro, haga doble clic en ThisWorkbook en el Explorador de proyectos

images/cap15_img_02.png

Por encima de la ventana de código hay dos cuadros de listas desplegables.

 Seleccione Workbook en la lista de la izquierda; en la lista de la derecha aparecen todos los eventos que Excel puede detectar automáticamente en relación con el libro.

 Seleccione el evento que le interesa.

Algunos eventos para los libros

Al igual que se vio en el capítulo sobre las hojas, se pueden activar instrucciones sobre eventos que tienen lugar en un libro. Ya sea al abrir, guardar o cerrar un libro, puede ser conveniente ejecutar instrucciones durante esos eventos, así como conocer algunos de ellos.

Abrir el libro: Workbook_Open

Cuando se abre el libro, se pueden ejecutar instrucciones, por ejemplo, para mostrar un mensaje al usuario o mostrar un formulario de bienvenida.

Las instrucciones podrían ponerse dentro de la siguiente macro:

Private Sub Workbook_Open() 
   MsgBox "Buenos días y bienvenido", vbOKOnly 
End Sub 

Ejemplo 23: usar el evento Worbook_Open

Guardar el libro: Workbook_BeforeSave

Justo antes de guardar un libro, se activa un evento; puede utilizarse en VBA, por ejemplo, para...

Manipular datos de varios libros

Para retomar varios elementos vistos en este capítulo, he aquí un ejemplo de código que tiene por objetivo:

  • crear un nuevo libro,

  • añadirle una hoja en la segunda posición, que se llamará B,

  • copiar los datos de la hoja A que se encuentra en el libro en el que se está ejecutando el código (ThisWorkbook),

  • y pegarlos en la hoja B del nuevo libro,

  • borrar la primera hoja del libro,

  • guardar el nuevo libro en el directorio P:\Informe con la fecha actual en el formato AAAA_MM_DD,

  • cerrar el libro.

Sub EjemploDeManipulacion() 
   'Déclaraciones 
   Dim wbk As Workbook 
   Dim wsh As Worksheet 
   'Asignaciones 
   Set wbk = Workbooks.Add 
   Set wsh = wbk.Worksheets.Add(After:=wbk.Worksheets(1)) 
   'Renombrar 
   wsh.Name = "B" 
   'Copiar datos de la hoja A 
   ThisWorkbook.Worksheets("A").UsedRange.Copy 
   'Pegar en la hoja B 
   wsh.Range("A1").PasteSpecial 
   'Borrar la primera hoja 
   wbk.Worksheets(1).Delete 
   'Guardar el libro 
   wbk.SaveAs "P:\Informe\" & Format(Date, "YYYY_MM_DD")...

Ejercicios

Como parte de los siguientes ejercicios, se encargará de crear una hoja llamada Ejercicios_Capitulo15. Algunos de los ejercicios utilizarán los datos que coloque allí.

Usar ThisWorkbook

Ubicación del libro

 Cree la macro Capitulo15_Ejercicio1A.

Esta macro mostrará la ubicación del libro.

 Ejecute la macro (ubicación del archivo).

Nombre de la hoja activa

 Cree la macro Capitulo15_Ejercicio1B.

Esta macro mostrará el nombre de la hoja activa del libro.

 Active una hoja del libro y ejecute la macro Capitulo15_Ejercicio1B (nombre de la hoja activa).

Crear, guardar y cerrar un libro

Crear un libro

 Cree la macro Capitulo15_Ejercicio2A.

Esta macro creará un libro y luego mostrará el número de hojas de este.

 Ejecute la macro Capitulo15_Ejercicio2A (1).

 Cierre manualmente el libro después de haber ejecutado la macro Capitulo15_Ejercicio2A.

Guardar un nuevo libro

 Cree la macro Capitulo15_Ejercicio2B.

Esta macro deberá crear un libro.

En este nuevo libro, la macro añadirá una hoja llamada Temp y luego guardará el libro. El nombre del libro (sin su extensión xlsx) está en la celda A1 de la hoja Ejercicios_Capitulo15 que ha creado. La carpeta donde se guarda el libro será la misma que la del libro donde se encuentra su código.

 Rellene la celda A1 de la hoja Ejercicios_Capitulo15 y ejecute...