La consulta que me dejó Mauricio (link al post) tiene sus buenos puntos de interés, ya que nos permitirá personalizar completamente cualquier trabajo. Me pregunta sobre la forma de "mover figuras" en una hoja de cálculos. Si bien no especifica la utilidad que le dará a esto, diseñé un ejemplo que contempla varios aspectos del manejo de Autoformas ("shapes") en Excel, mediante macros.
Así que para empezar, creamos un nuevo libro, seleccionamos todas las celas y le damos por color de fondo: blanco. Luego menú "Insertar / Imagenes / Autoformas", eligiendo la de nuestra preferencia.
si observan el "cuadro de nombres", verán que Excel asignó a este shape el nombre "Autoforma 1"
[+/-] Ver el resto / Ocultar
Hagamos lo mismo con el "cuadro2":
Los pasos de la animación son los siguientes:
Así que los ultimos 3 objetos deberán estar, en principio, invisibles. Vamos a la ventana de código de la hoja en donde tenemos las Autoformas y seleccionamos el evento "Activate", escribiendo el siguiente código:
Ya estamos casi casi listo. Volvemos al código sobre el cual veníamos trabajando, debiéndonos quedar:
Ya tienes lista tu presentación. Como de costumbre, en estos casos, dejo el link para descargar el archivo.
Puede parecer mucho trabajo, te aclaro que unicamente utilicé esto para "impresionar" (jeje) y que digan asombrados cuanto sé de Excel (la típica "canchereada", cuando en realidad lo unico que hago es animar un par de figuras), pero en la presentación de un proyecto nos dará unos buenos puntos de ventaja, al margen de evitar recurrir a otros programas. No te olvides de un punto decisivo en el marketing laboral: no solamente hay que trabajar bien, si no hacer ver a los otros que trabajamos bien. =)
Como mencionaste que no manejás las macros, o no lo hacés del todo, omití un dato importante que permite dar gran versatilidad al trabajo: en lugar de poner dentro del código las unidades de desplazamiento y los tiempos entre cada animación, conviene armar una tabla con ellos y luego leerlos desde VBA.... algo como esto:
Vamos a darle un nombre mas cómodo: hacemos click sobre el Cuadro de Nombres e ingresamos "flecha1"
(sin las comillas).
Teniendo nuestra figura renombrada en la hoja, nos vamos al editor de VBA (alt + f11) e insertamos un nuevo módulo, en donde escribiremos nuestro código.
Existen dos líneas de programación fundamentales:
a) IncrementTop XX : es la posición vertical del objeto. XX es la cantidad de unidades que desplazaremos la figura "hacia abajo". Mientras mayor sea el valor de XX, mas abajo irá nuestro shape.
b) IncrementLeft XX: idem anterior, pero desplazando la figura hacia la derecha.
Comencemos a escribir nuestra macro. Como primer medida, vamos a fijar nuestra figura en un punto determinado de la hoja, y desde allí la desplazaremos y le daremos otro color de fondo:
Sub MoverShape()With ActiveSheet.Shapes("flecha1") .Top = 100 .Left = 100 .Fill.ForeColor.SchemeColor = 41 End With [a1].Select End Subeste código produce el siguiente resultado:
en la primer imagen del post vemos la flecha blanca ocupando el ancho de la columna A, B y C. en esta imagen apreciamos el desplazamiento hasta la columna G.
Pero bueno, después de todo lo unico que hicimos es mover la flecha. Ahora incluiremos un par de figuras mas y las haremos visibles cuando se detenga la flecha, para lograr el efecto "power point" en Excel:
Dejando la flecha tal cual está, agregamos lo siguiente a nuestra hoja:
incorporé tres figuras mas, a las que desde el cuadro de nombres llamé: cuadro1, flecha3 y cuadro3, respectivamente.
Estas Autoformas me permiten ingresar texto manualmente, pero en realidad poseen una utilidad muy buena y casi desconocida: vincular su contenido al de una celda. Hacemos click sobre el "cuadro1" y luego en la barra de fórmulas ingresamos, por ejempo, =A1
el valor de A1 está ahora dentro de nuestro "cuadro1"
Hagamos lo mismo con el "cuadro2":
1) Mover la flecha (ya lo tenemos)
2) cuando termine el recorrido, que aparezca el cuadro1
3) esperar 2 segundos y que aparezca la figura flecha2
4) esperar 2 segundos mas y finalmente aparezca el cuadro2Así que los ultimos 3 objetos deberán estar, en principio, invisibles. Vamos a la ventana de código de la hoja en donde tenemos las Autoformas y seleccionamos el evento "Activate", escribiendo el siguiente código:
Private Sub Worksheet_Activate() 'cada vez que seleccionemos la hoja, los tres elementos se ocultarán Shapes("cuadro1").Visible = msoFalse Shapes("flecha2").Visible = msoFalse Shapes("cuadro2").Visible = msoFalse End Sub
Ya estamos casi casi listo. Volvemos al código sobre el cual veníamos trabajando, debiéndonos quedar:
Sub MoverShape() Dim X, J As Integer With ActiveSheet.Shapes("flecha1") 'defino posición del objeto .Top = 100 .Left = 100 'le doy un color: .Fill.ForeColor.SchemeColor = 41 'ahora viene la parte de la animación, ejecutada mediante 'un bucle For. For X = 1 To 20 'recibo cualquier evento: DoEvents .IncrementLeft X 'aqui repito 600 veces un bucle que ejecuta la espera '(wait) For J = 1 To 600 Application.Wait (Now() + (1.7 / 300000)) Next J Next X End With 'ahora animamos los elementos restantes: With ActiveSheet [a1].Select 'espero un segundo: Application.Wait (Now() + TimeSerial(0, 0, 1)) 'hago visible el cuadro1 .Shapes("cuadro1").Visible = True [a1].Select 'espero dos segundos: Application.Wait (Now() + TimeSerial(0, 0, 2)) 'hago visible a flecha2 .Shapes("flecha2").Visible = True [a1].Select 'espero otros dos segundos: Application.Wait (Now() + TimeSerial(0, 0, 2)) 'hago visible el cuadro2 .Shapes("cuadro2").Visible = True [a1].Select 'un extra: cambiar el tamaño del ultimo cuadro, agrandandolo 'por unos segundos y luego volviéndolo al tamaño original: Application.Wait (Now() + TimeSerial(0, 0, 1)) 'tomo el ancho y alto de la figura: ancho = .Shapes("cuadro2").Width alto = .Shapes("cuadro2").Height 'lo agrando 100 unidades: .Shapes("cuadro2").Width = ancho + 100 .Shapes("cuadro2").Height = ancho + 100 [a1].Select 'espero cuadro segundos Application.Wait (Now() + TimeSerial(0, 0, 4)) [a1].Select 'vuelvo al tamaño normal: .Shapes("cuadro2").Width = ancho .Shapes("cuadro2").Height = alto End With MsgBox "fin de la presentación" [a1].Select End Sub
Ya tienes lista tu presentación. Como de costumbre, en estos casos, dejo el link para descargar el archivo.
Puede parecer mucho trabajo, te aclaro que unicamente utilicé esto para "impresionar" (jeje) y que digan asombrados cuanto sé de Excel (la típica "canchereada", cuando en realidad lo unico que hago es animar un par de figuras), pero en la presentación de un proyecto nos dará unos buenos puntos de ventaja, al margen de evitar recurrir a otros programas. No te olvides de un punto decisivo en el marketing laboral: no solamente hay que trabajar bien, si no hacer ver a los otros que trabajamos bien. =)
Como mencionaste que no manejás las macros, o no lo hacés del todo, omití un dato importante que permite dar gran versatilidad al trabajo: en lugar de poner dentro del código las unidades de desplazamiento y los tiempos entre cada animación, conviene armar una tabla con ellos y luego leerlos desde VBA.... algo como esto:
a estos valores los leemos desde VBA y nos resultará mucho mas facil, posteriormente, modificar algunos aspectos de nuestra animación
Suerte y espero que te sea de utilidad.- Obtener enlace
- Correo electrónico
- Otras aplicaciones
Etiquetas
Macros
Etiquetas:
Macros
- Obtener enlace
- Correo electrónico
- Otras aplicaciones
gracias damiannnnnnnn!!!!!! es justo lo que estaba buscando. 'toy mirando el archivo que dejaste y practicando. capo !!!!!!!! muy bien explicado y perfecto el ejemplo, no pensé en llegar a tanto solo queria mover un poco una imagen y nada mas. pero esto me abre muchas posibilidades mas. gracias de nuevo y si tengo problemas te consulto de nuevo.
ResponderEliminar