Lección 21: Seleccionar una hoja o un libro automáticamente con VBA.

seleccionar-hoja-vba

Escrito por Administrador

5 de septiembre de 2021

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.

Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "NombreDeLaHoja"

2. Cambio de hoja dentro del mismo libro.

Sheets("NombreDeLaHoja").Activate

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.

WorkSheets("NombreDeLaHoja").Delete

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.

Application.Workbooks.Open "RutaDelLibro"

6. Cambiar de un libro a otro.

Workbooks("NombreDelLibro").Activate

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.

Application.ActiveWorkbook.SaveAs("NombreDelLibro")

9. Guardar un libro con un nombre determinado en una ruta determinada.

ActiveWorkbook.SaveAs Filename:="Ruta" _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

10. Cerrar un libro.

Workbooks("NombreDelLibro").Close

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).

Workbooks("NombreDelLibro").Close Savechanges:=False

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.

Sub Leccion21_1()

'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.

Sub Leccion21_2()

'Macro que borra la pestaña Copia

Sheets("Copia").Delete

End Sub

Macro 3. Borrar una pestaña sin mensaje de aviso.

Sub Leccion21_3()

'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.

Sub Leccion21_4()

'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.

total-operaciones-matematicas-macros

Como resultado, la primera de las macros va a copiar la tabla en una nueva pestaña que llamamos “Copia”.

total-operaciones-matematicas-macros

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.

total-operaciones-matematicas-macros

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

Por último, 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.

Finalmente, desear que te esté gustando el curso y pedirte que me plantees cualquier duda que te surja. También, puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario. De hecho, soy todo oídos. Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L20. Funciones ScrollRow y ScrollColumn en VBA.

L22. Eventos Change e Intersect en VBA. »

0 comentarios

Enviar un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto