Retocar VBA de una macro

19/05/2008 - 18:13 por Goldberg00 | Informe spam
Hola a todos.

No tengo ni idea de programar o tocar el código de VBA. Sin embargo suelo
crearme mis propias macros y suelen resultar de mucha utilidad. Las macros
normalmente las uso en Excel y alguna en Word pero hasta ahora no había visto
la necesidad de crearme una en PowerPoint. Como los WordArt tienen la salida
de texto que tienen, he visto que con una macro podría dejar todos los
títulos generados en WordArt con el mismo aspecto. Me he creado una macro
para eso (bajar la altura al 79%; subir el ancho al 115%, eliminar la línea
de contorno, etc.) El problema viene dado porque cuando creo la macro siempre
hace referencia al shape u objeto identificado con un número en el que creé
dicha macro y por tanto, con la generación de cada nuevo título en WordArt,
como no encuentra el objeto de referencia se queda trastabillado.

Sabríais cómo podría hacer para que el shape sobre el que se van a generar
los cambios sea simplemente el que esté activo?

Gracias por adelantado y saludos!

Goldberg.

WinXP Pro SP2
Office 2003 Pro

Preguntas similare

Leer las respuestas

#6 Goldberg00
06/06/2008 - 11:10 | Informe spam
Hola Enric.

Bueno, ya sé qué es lo que hay que tenemos que hacer. Mira, yo había
desarrollado (a base de acciones, no con VBA) la siguiente macro para
reconducir el formato de mis WordArt:

ActiveWindow.Selection.Unselect
ActiveWindow.Selection.SlideRange.Shapes("WordArt 5").Select
ActiveWindow.Selection.ShapeRange.Line.Visible = msoFalse
With ActiveWindow.Selection.ShapeRange
.Fill.ForeColor.RGB = RGB(255, 255, 255)
.Fill.Transparency = 0#
.Fill.OneColorGradient msoGradientHorizontal, 1, 0.43
End With
With ActiveWindow.Selection.ShapeRange
.Line.ForeColor.SchemeColor = ppForeground
.Line.Visible = msoTrue
End With
With ActiveWindow.Selection.ShapeRange
.Shadow.ForeColor.SchemeColor = ppForeground
.Shadow.Visible = msoTrue
.ThreeD.Visible = msoFalse
End With
ActiveWindow.Selection.ShapeRange.Shadow.IncrementOffsetY -1#
ActiveWindow.Selection.ShapeRange.Shadow.IncrementOffsetX -1#
ActiveWindow.Selection.ShapeRange.Shadow.IncrementOffsetX -1#
With ActiveWindow.Selection.ShapeRange
.Line.Weight = 0.25
.Line.Visible = msoTrue
.Line.Style = msoLineSingle
End With
With ActiveWindow.Selection.ShapeRange
.TextEffect.FontName = "Arial"
.TextEffect.FontBold = msoTrue
End With
With ActiveWindow.Selection.ShapeRange
.Fill.Transparency = 0#
.Width = 406.12
End With
ActiveWindow.Selection.ShapeRange.TextEffect.Tracking = 0.9
With ActiveWindow.Selection.ShapeRange
.Line.ForeColor.RGB = RGB(221, 221, 221)
.Line.Visible = msoTrue
End With
ActivePresentation.ExtraColors.Add RGB(Red:"1, Green:"1, Blue:"1)
With ActiveWindow.Selection.ShapeRange
.Fill.Transparency = 0#
.Height = 48.5
End With
End Sub

Para conseguir que la macro se pueda aplicar a cualquier objeto (WordArt o
autoforma de PowerPoint) y que 'absorba' los formatos que se plantean, habría
que eliminar las líneas que hacían referencia al WordArt con el que se creó
la macro:

ActiveWindow.Selection.Unselect
ActiveWindow.Selection.SlideRange.Shapes("WordArt 5").Select

Con esto ya podríamos aplicarlo a cualquier objeto.

Ahora hay que tocar el código que hace referencia a los tamaños. Como
queremos aumentar la anchura al 130% y disminuir la altura al 85% los cambios
serían los siguientes:

En origen estaba
.Width = 406.12

y habría que cambiarlo de la siguiente forma:
.Width = .Width * 1.3


y lo mismo con la altura. Teníamos
.Height = 48.5

y lo cambiaríamos así
.Height = .Height * 0.85


Ahora lo veo y es todo una chorrada, pero lo que hace el no saber.

Bueno, en fin, espero que te sirva. Si no hablamos, buen fin de semana.

Un cordial saludo!

Antonio





"Enric Mañas [PowerPoint MVP]" escribió:

Goldberg/Antonio,

;-)

...un placer...

una vez estés "ilustrado"... te pido yo la ayuda...

;-)

Muy cordialmente

Enric
Enric Mañas [MS MVP Office - PowerPoint]
Respuesta Responder a este mensaje
#7 Enric Mañas [PowerPoint MVP]
06/06/2008 - 18:34 | Informe spam
Antonio,

Guardada para probarla en cuanto tenga un momento...

Muchas gracias...

Buen fin de semana...

;-)

Muy cordialmente

Enric
Enric Mañas [MS MVP Office - PowerPoint]


"Goldberg00" escribió:

Hola Enric.

Bueno, ya sé qué es lo que hay que tenemos que hacer. Mira, yo había
desarrollado (a base de acciones, no con VBA) la siguiente macro para
reconducir el formato de mis WordArt:

ActiveWindow.Selection.Unselect
ActiveWindow.Selection.SlideRange.Shapes("WordArt 5").Select
ActiveWindow.Selection.ShapeRange.Line.Visible = msoFalse
With ActiveWindow.Selection.ShapeRange
.Fill.ForeColor.RGB = RGB(255, 255, 255)
.Fill.Transparency = 0#
.Fill.OneColorGradient msoGradientHorizontal, 1, 0.43
End With
With ActiveWindow.Selection.ShapeRange
.Line.ForeColor.SchemeColor = ppForeground
.Line.Visible = msoTrue
End With
With ActiveWindow.Selection.ShapeRange
.Shadow.ForeColor.SchemeColor = ppForeground
.Shadow.Visible = msoTrue
.ThreeD.Visible = msoFalse
End With
ActiveWindow.Selection.ShapeRange.Shadow.IncrementOffsetY -1#
ActiveWindow.Selection.ShapeRange.Shadow.IncrementOffsetX -1#
ActiveWindow.Selection.ShapeRange.Shadow.IncrementOffsetX -1#
With ActiveWindow.Selection.ShapeRange
.Line.Weight = 0.25
.Line.Visible = msoTrue
.Line.Style = msoLineSingle
End With
With ActiveWindow.Selection.ShapeRange
.TextEffect.FontName = "Arial"
.TextEffect.FontBold = msoTrue
End With
With ActiveWindow.Selection.ShapeRange
.Fill.Transparency = 0#
.Width = 406.12
End With
ActiveWindow.Selection.ShapeRange.TextEffect.Tracking = 0.9
With ActiveWindow.Selection.ShapeRange
.Line.ForeColor.RGB = RGB(221, 221, 221)
.Line.Visible = msoTrue
End With
ActivePresentation.ExtraColors.Add RGB(Red:"1, Green:"1, Blue:"1)
With ActiveWindow.Selection.ShapeRange
.Fill.Transparency = 0#
.Height = 48.5
End With
End Sub

Para conseguir que la macro se pueda aplicar a cualquier objeto (WordArt o
autoforma de PowerPoint) y que 'absorba' los formatos que se plantean, habría
que eliminar las líneas que hacían referencia al WordArt con el que se creó
la macro:

ActiveWindow.Selection.Unselect
ActiveWindow.Selection.SlideRange.Shapes("WordArt 5").Select

Con esto ya podríamos aplicarlo a cualquier objeto.

Ahora hay que tocar el código que hace referencia a los tamaños. Como
queremos aumentar la anchura al 130% y disminuir la altura al 85% los cambios
serían los siguientes:

En origen estaba
.Width = 406.12

y habría que cambiarlo de la siguiente forma:
.Width = .Width * 1.3


y lo mismo con la altura. Teníamos
.Height = 48.5

y lo cambiaríamos así
.Height = .Height * 0.85


Ahora lo veo y es todo una chorrada, pero lo que hace el no saber.

Bueno, en fin, espero que te sirva. Si no hablamos, buen fin de semana.

Un cordial saludo!

Antonio





"Enric Mañas [PowerPoint MVP]" escribió:

> Goldberg/Antonio,
>
> ;-)
>
> ...un placer...
>
> una vez estés "ilustrado"... te pido yo la ayuda...
>
> ;-)
>
> Muy cordialmente
>
> Enric
> Enric Mañas [MS MVP Office - PowerPoint]
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida