En esta lección quiero enseñarte cómo seleccionar una hoja o un libro Excel usando VBA, porque es necesario para programar el traspaso de información entre hojas o libros de manera automática y, así, poder llevar los datos de un sitio a otro.
De esta forma, evitaremos tener que estar abriendo y cerrando libros de forma manual, lo cual ralentiza nuestro trabajo y lo hace menos eficiente.
A diario realizamos numerosas operaciones repetitivas con nuestros archivos Excel. Sobre todo, una de las más comunes es copiar datos de una tabla en otra de una hoja o de un libro diferente. Por lo tanto, conociendo los comandos adecuados, todo esto se puede automatizar de una manera sencilla.
Además, hay que ser metódico y saber en qué hoja y en qué libro estoy en cada momento. Porque puede darse el caso de que programemos operaciones en la hoja o el libro equivocado si no lo hemos referenciado bien previamente.
En definitiva, hay que ser cuidadoso a la hora de programar.
1. Crear una hoja nueva.
2. Cambio de hoja dentro del mismo libro.
Todas las operaciones que vienen a continuación de este comando, se realizan con las celdas de dicha hoja seleccionada, hasta que no volvamos a cambiar de hoja.
3. Eliminar una hoja.
Si no queremos que nos salte la pregunta de si estamos seguros o no, podemos utilizar el comando
Application.DisplayAlerts = False
Tal y como vimos en su día en la lección 3 sobre cómo anular las notificaciones con la funcion ScreenUpdate en macros.
4. Crear un libro nuevo.
Workbooks.Add
5. Abrir un libro existente.
6. Cambiar de un libro a otro.
También podríamos utilizar:
Workbooks(Numerodelibro).Activate
Cuando tenemos abiertos varios libros al mismo tiempo, Excel identifica el libro según el orden de apertura de los mismos. De esta forma, podríamos cambiar de un libro a otro sabiendo cual se ha abierto primero, segundo, tercero…
No obstante, lo veremos en un ejemplo más adelante.
7. Guardar los cambios en un libro.
ActiveWorkbook.Save
8. Guardar un libro con un nombre determinado.
9. Guardar un libro con un nombre determinado en una ruta determinada.
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
10. Cerrar un libro.
Para evitar que te salga el cuadro de diálogo preguntándote si quieres salvar cambios, podríamos completar el comando con Savechanges (False/True).
A continuación, vamos a ver con un ejemplo cómo seleccionar una hoja y un libro de Excel usando VBA.
En primer lugar, crea un libro nuevo, abre el editor VBA e inserta 4 módulos. Después, copia en ellos las siguientes macros.
Macro 1. Copiar una tabla en una nueva pestaña.
'Macro que copia los valores de una tabla en una nueva pestaña
'Creamos una hoja nueva llamada "Copia"
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Copia"
'Volvemos a la hoja donde se encuentran los datos que queremos copiar
Sheets("Notas").Activate
'Copiamos la tabla
Range("B2:C13").Copy
'Vamos a la hoja "Copia" que es donde copiaremos la tabla
Sheets("Copia").Activate
'Pegamos la tabla en la celda B2
Cells(2, "B").Select
Selection.PasteSpecial Paste:=xlPasteAll, operation:=xlNone, skipblanks _
:=False, Transpose:=False
'Ajustamos los anchos de las filas y columnas
Rows("2:2").Select
Selection.RowHeight = 20
Columns("B:B").Select
Selection.ColumnWidth = 30
Columns("C:C").Select
Selection.ColumnWidth = 15
'Desactivamos la función copiar
Application.CutCopyMode = False
'Seleccionamos la celda A1
Cells(1, "A").Select
End Sub
Macro 2. Borrar una pestaña con mensaje de aviso.
'Macro que borra la pestaña Copia
Sheets("Copia").Delete
End Sub
Macro 3. Borrar una pestaña sin mensaje de aviso.
'Macro que borra la pestaña Copia evitando que aparezcan avisos de confirmación
Application.DisplayAlerts = False
Sheets("Copia").Delete
Application.DisplayAlerts = True
End Sub
Macro 4. Copiar una tabla en otro libro.
'Macro que copia los valores de la tabla en un nuevo libro
'Creamos un libro nuevo
Workbooks.Add
'Volvemos al libro original, como es el primero que se ha abierto, su identificador es el 1
Workbooks(1).Activate
'Seleccionamos la hoja que contiene la tabla
Sheets("Notas").Activate
'Copiamos la tabla
Range("B2:C13").Copy
'Cambiamos al nuevo libro, como es el segundo que se ha abierto, su identificador es el 2
Workbooks(2).Activate
'Pegamos la tabla en la celda B2
Cells(2, "B").Select
Selection.PasteSpecial Paste:=xlPasteAll, operation:=xlNone, skipblanks _
:=False, Transpose:=False
'Ajustamos los anchos de las filas y columnas
Rows("2:2").Select
Selection.RowHeight = 20
Columns("B:B").Select
Selection.ColumnWidth = 30
Columns("C:C").Select
Selection.ColumnWidth = 15
'Desactivamos la función copiar
Application.CutCopyMode = False
'Seleccionamos la celda A1
Cells(1, "A").Select
'Guardamos el libro nuevo con el nombre "Copia"
Application.ActiveWorkbook.SaveAs ("Copia")
'Cerramos el libro nuevo
Workbooks(2).Close
End Sub
Por último, rellena la hoja de cálculo como se muestra en la figura. También, tendrás que crear 4 botones y asignarles las macros anteriores.
Como resultado, la primera de las macros va a copiar la tabla en una nueva pestaña que llamamos “Copia”.
La segunda macro, por el contrario, elimina dicha pestaña. Al ejecutarla, aparecerá un mensaje de aviso indicándonos que dicha pestaña contiene datos y los perderemos, requiriendo nuestra confirmación para su eliminación.
Como la tarea de eliminar una pestaña puede ser un paso intermedio de varias tareas programadas, y tener que estar pendiente de validar la eliminación puede ser una lata, en la tercera macro hemos deshabilitado los mensajes de alerta, y la eliminación de la pestaña se realizará sin necesidad de confirmación.
Application.DisplayAlerts = False
Finalmente, la cuarta macro crea un libro nuevo y copia la tabla en él. Después, se guarda automáticamente con el nombre “Copia” y se cierra.
Con esto llegamos al final de la vigesimoprimera lección, en la que has aprendido a seleccionar una hoja o un libro de Excel usando VBA.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Nos vemos en el próximo capítulo.
Si te ha servido y quieres donar
Descarga el archivo del ejemplo
2 Comentarios
Enviar un comentario
« L20. Funciones ScrollRow y ScrollColumn en VBA.
L22. Eventos Change e Intersect en VBA. »
Hola. Primero, agradecer por el aporte al conocimiento de cómo trabajar en excel con estas importantes herramientas; por otra parte, en la cuarta macro, sería bueno que se explica cómo controlar la dirección en la que se va a guardar la copia del archivo. gracias
Hola Alberto,
Gracias por tu comentario.
En este enlace tienes el código necesario para poder crear un libro,
Ejercicio práctico 8: Cómo enviar automáticamente informes por email (Lotus) usando una macro en Excel.
Cualquier cosa me dices. Saludos.