Macro para

08/12/2007 - 00:38 por Rucoma | Informe spam
Grabé una macro en power point para que me cambiara el tamaño de las
imagenes de una diapositiva y las situara correctamente en ella.
El código resultante es el siguiente:

With ActiveWindow.Selection.ShapeRange
.Fill.Transparency = 0#
.LockAspectRatio = msoFalse
.Height = 200
.Width = 350#
End With
ActiveWindow.Selection.Unselect
ActiveWindow.Selection.SlideRange.Shapes("Picture 7").Select
With ActiveWindow.Selection.ShapeRange
.IncrementLeft 175#
.IncrementTop 100#
End With
ActiveWindow.Selection.SlideRange.Shapes("Picture 6").Select
With ActiveWindow.Selection.ShapeRange
.IncrementLeft -175#
.IncrementTop 100#
End With
ActiveWindow.Selection.SlideRange.Shapes("Picture 5").Select
With ActiveWindow.Selection.ShapeRange
.IncrementLeft 175#
.IncrementTop -100#
End With
ActiveWindow.Selection.SlideRange.Shapes("Picture 4").Select
With ActiveWindow.Selection.ShapeRange
.IncrementLeft -175#
.IncrementTop -100#
End With
End Sub


El problema está en que al correr la macro en la siguiente diapositiva
(y tengo que hacerlo en muchas), las referencias a las imágenes
("Picture 7", etc) han cambiado, por lo que no me sirve.
Hay alguna manera de hacerlo para que la macro no se guíe por el
nombre del objeto?
Espero haberme explicado con claridad.

Muchas gracias y saludos.
 

Leer las respuestas

#1 Héctor Miguel
08/12/2007 - 09:03 | Informe spam
hola, ruben !

no se que relacion tenga tu consulta con el grupo de excel (esta incluido en los grupos a los que posteaste)
tampoco se si la relacion del nombre de los shapes/pictures tenga relacion directa con su numero de indice
es decir, si el orden en que copias/pegas las imagenes ("Picture 7", "...6", "...5", "...4") equivale a 1, 2, 3 y 4 -?-

si suponemos que el orden es equivalente (nombre = indice o posicion) y que siempre existiran (SOLO) 4 shapes/picture...
el siguiente codigo se ejecuta exactamente igual para cada diapositiva de 4 imagenes en la misma posicion (inicial -> final)

Dim n As Byte
With ActiveWindow.Selection.SlideRange
For n = 1 To 4
With .Shapes(n)
.Fill.Transparency = 0
.LockAspectRatio = msoFalse
.Height = 200
.Width = 350
.LockAspectRatio = msoFalse
.Height = 200
.Width = 350
.IncrementLeft 175 * IIf((n - 1) Mod 2, -1, 1)
.IncrementTop 100 * IIf(n > 2, -1, 1)
End With
Next
End With

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta original __
Grabe una macro en power point para que me cambiara el tamano de las imagenes de una diapositiva y las situara correctamente en ella.
El codigo resultante es el siguiente:

With ActiveWindow.Selection.ShapeRange
.Fill.Transparency = 0#
.LockAspectRatio = msoFalse
.Height = 200
.Width = 350#
End With
ActiveWindow.Selection.Unselect
ActiveWindow.Selection.SlideRange.Shapes("Picture 7").Select
With ActiveWindow.Selection.ShapeRange
.IncrementLeft 175#
.IncrementTop 100#
End With
ActiveWindow.Selection.SlideRange.Shapes("Picture 6").Select
With ActiveWindow.Selection.ShapeRange
.IncrementLeft -175#
.IncrementTop 100#
End With
ActiveWindow.Selection.SlideRange.Shapes("Picture 5").Select
With ActiveWindow.Selection.ShapeRange
.IncrementLeft 175#
.IncrementTop -100#
End With
ActiveWindow.Selection.SlideRange.Shapes("Picture 4").Select
With ActiveWindow.Selection.ShapeRange
.IncrementLeft -175#
.IncrementTop -100#
End With
End Sub

El problema esta en que al correr la macro en la siguiente diapositiva (y tengo que hacerlo en muchas)
las referencias a las imagenes ("Picture 7", etc) han cambiado, por lo que no me sirve.
Hay alguna manera de hacerlo para que la macro no se guie por el nombre del objeto?
Espero haberme explicado con claridad.

Preguntas similares