Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Al construir un reporte en Excel es comn mostrar un resumen de la informacin en la primera hoja que nos
permitir consultar el detalle que se encuentra en el resto de las hojas del libro y que tambin ofrecen
informacin relevante. Nuestro objetivo es hacer que el usuario llegue al detalle que est buscando de una
manera sencilla.
Una buena alternativa para crear este sistema de navegacin en nuestro libro, es colocar un botn para
moverse entre hojas. De esta manera podemos guiar a los usuarios hacia las hojas que contienen todo el detalle
y evitar que ellos tengan que visitar cada una de las hojas en busca de la informacin.
Una vez que hayas especificado un nombre adecuado para la macro haz clic en Aceptar y solamente debers
realizar una sola accin: Hacer clic sobre la pestaa de la hoja a donde deseas moverte.
Inmediatamente despus debers detener la grabacin pulsando el botn Detener grabacin que se encuentra en
la barra de estado de Excel. Con esto hemos creado la macro que nos ayudar a movernos a una hoja dentro del
libro y solamente nos restar agregar el botn a la hoja. Para agregar este botn debes hacer clic en el botn
desplegable Insertar que se encuentra dentro del grupo Controles de la ficha Programador y seleccionar el
elemento Botn.
El puntero del ratn te permitir definir el tamao del botn sobre la Hoja y al terminar de dibujarlo se mostrar
el cuadro de dilogo Asignar macro.
Lo nico que tenemos que hacer es seleccionar la macro que recin acabamos de crear y pulsar el botn
Aceptar. Al pulsar el botn recin creado nos moveremos hacia la nueva hoja. De esta misma manera podemos
grabar una macro diferente que nos lleve de regreso a la hoja principal. Observa la siguiente animacin en
donde ya he creado una segunda macro que me permite regresar a la Hoja inicial:
Analizando el cdigo VBA
Si analizas el cdigo creado con la grabadora de macros, podremos aprender un poco sobre programacin VBA.
Las macros que fueron creadas generaron un cdigo que puedes ver en el Editor de Visual Basic y que ser
similar al siguiente:
Observa que el objeto Sheets tiene un mtodo llamado Select el cual hace la seleccin de dicha hoja:
Sheets("Hoja1").Select
Esta instruccin siempre seleccionar la Hoja1 independientemente de la hoja en la que me encuentre. De esta
manera, la macro que creamos la podemos asignar a un botn en cualquier otra hoja de nuestro libro y siempre
nos moveremos a la Hoja1.
Para garantizar que el botn que nos mueve a la hoja Principal funcione adecuadamente debo modificar el
cdigo VBA de la siguiente manera:
Con la nueva instruccin (Hoja1.Select) estaremos utilizando el nombre interno del objeto y no importar si
cambia de nombre la hoja, nuestro sistema de navegacin siempre funcionar adecuadamente.
Sheets(Sheets.Count).Select
Sheets(1).Select
.
Macro para copiar datos a otro libro de Excel
Hace algunas semanas habl sobre cmo crear una macro para copiar datos de una hoja a otra y de inmediato
recib preguntas sobre cmo modificar dicho cdigo para hacer la misma copia de datos pero a un libro
diferente de Excel. Para lograr este nuevo objetivo haremos uso del mtodo Open de la coleccin de objetos
Workbooks.
Ya que la coleccin Workbooks es a su vez un objeto en Excel, tendr sus propios mtodos y propiedades y en
esta ocasin centraremos nuestra atencin en su mtodo Open.
Es importante que la ruta del archivo indicado sea la correcta o de lo contrario obtendremos un mensaje de
error. Pero si todo funciona correctamente, obtendremos un nuevo objeto Workbook que har referencia al
archivo indicado y podremos hacer referencia a cualquier hoja y celda de dicho libro para copiar los datos
deseados.
1
2
3
4 Sub CopiarCeldas()
5
'Definir objetos a utilizar
6 Dim wbDestino As Workbook, _
7 wsOrigen As Excel.Worksheet, _
8 wsDestino As Excel.Worksheet, _
9 rngOrigen As Excel.Range, _
rngDestino As Excel.Range
10
11'Indicar el libro de Excel destino
12Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "LibroDestino.xlsx")
13
14'Activar este libro
15ThisWorkbook.Activate
16
17'Indicar las hojas de origen y destino
Set wsOrigen = Worksheets("Origen")
18Set wsDestino = wbDestino.Worksheets("HojaDestino")
19
20'Indicar la celda de origen y destino
21Const celdaOrigen = "A1"
22Const celdaDestino = "A1"
23
24'Inicializar los rangos de origen y destino
Set rngOrigen = wsOrigen.Range(celdaOrigen)
25Set rngDestino = wsDestino.Range(celdaDestino)
26
27'Seleccionar rango de celdas origen
28rngOrigen.Select
29Range(Selection, Selection.End(xlDown)).Select
30Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
31
32'Pegar datos en celda destino
33rngDestino.PasteSpecial xlPasteValues
34Application.CutCopyMode = False
35
36'Guardar y cerrar el libro de Excel destino
wbDestino.Save
37wbDestino.Close
38
39End Sub
40
41
42
Las diferencias entre esta nueva macro y la publicada en el artculo original son las siguientes:
Lnea 4: Defin la variable wbDestino como un objeto del tipo Workbook que nos servir para guardar la
referencia al libro destino.
Lnea 11: El mtodo Workbooks.Open se encarga de abrir el libro a donde se copiarn los datos y la
referencia se guardar en la variable wbDestino.
Lnea 14: El libro abierto se convierte en el libro activo as que, para que las referencias del resto del
cdigo funcionen tal como en la versin original, activo de nueva cuente al libro donde se encuentra el
cdigo con la instruccin ThisWorkbook.Activate.
Lnea 18: Utilizo el objeto wbDestino para hacer referencia a la hoja de dicho libro a donde se copiarn
los datos.
Lnea 39 y 40: Los mtodos Save y Close me permiten guardar los cambios en el libro destino y
finalmente cerrarlo.
Es importante que la ruta al libro destino sea correcta o de lo contrario recibirs un mensaje de error. De la
misma manera, la hoja de destino indicada debe existir en dicho libro o tambin recibirs un mensaje de error.
Recuerda que se pegarn los valores sin formato, debido al argumento xlPasteValues del mtodo PasteSpecial
(Lnea 35), pero si deseas incluir el formato al copiar los datos solo debes reemplazar dicho argumento por
xlPasteAll.
Solo resta que descargues los archivos de trabajo y ejecutes la macro para copiar datos a otro libro de Excel.
Si deseas probar con tus propios libros debers copiar el cdigo VBA y hacer dos cambios importantes: Indicar
correctamente la ruta del archivo destino (Lnea 11) y el nombre de la hoja a donde se copiarn los datos (Lnea
18).