Macro para formas y WordArt

28/05/2008 - 15:13 por Goldberg00 | Informe spam
Hola a todos.
Tengo una hoja de Excel en la que incluyo diversos elementos gráficos.
Básicamente formas y WordArt.

Me gustaría hacer una macro para que, por ejemplo, los WordArt tuvieran
siempre el mismo aspecto. El caso es que he generado una pero el VBA siempre
me hace referencia a los tamaños fijos y al nombre del WordArt cuando la
creé. Es decir, que sólo lo aplica a un objeto llamado como el de la macro de
origen. Además, los tamaños no los cambia porcentualmente que es lo que me
interesa.

No tengo idea de tocar código. Os agradezco la ayuda por adelantado!

Saludos!!

G00

Preguntas similare

Leer las respuestas

#1 Goldberg00
05/06/2008 - 21:53 | Informe spam
Hola Héctor.

Antes de empezar dos cosas: gracias por tu respuesta y perdón por el retraso
en la mía.

Acerca de lo que me pedías. He creado la macro (a base de rudimentos de
acciones, sin VBA) del WordArt del que hablábamos.

Es ésta:




Sub WordArt_cambio()
'
' Macro grabada el 05/06/2008 por AS
'
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




Como verás, el objeto al que hace referencia es "Wordart 5" y no el que yo
quiera seleccionar. Si creo uno nuevo, que obviamente ya no llamará así, no
aplica la macro.

También me refería a los tamaños. He puesto un tamaño del 130% de ancho y un
decremento al 95% en el alto pero ha considerado las cifras absolutas y
claro, esto no me vale. El siguiente WordArt o cualquier otro objeto no tiene
por qué medir lo mismo que "WordArt 5" y por tanto las cifras absolutas no
son válidas.

Era a eso a lo que me refería. No sé si te hará falta algún dato más.
Básicamente es que me enseñes a cambiar cifras absolutas por valores
relativos y por otro lado a que la macro se pueda aplicar a cualquier objeto.

Gracias de nuevo y cordiales saludos!

Antonio



"Héctor Miguel" escribió:

hola, 'anonimo/a' !

__ 1 __
> Tengo una hoja de Excel en la que incluyo diversos elementos graficos. Basicamente formas y WordArt.
> Me gustaria hacer una macro para que, por ejemplo, los WordArt tuvieran siempre el mismo aspecto.

1) podrias definir (de preferencia +/- exactamente) a que te refieres con ".. siempre EL MISMO aspecto" ?
- (p.e.) que la forma sea SIEMPRE del mismo "tipo/figura/formato/..." ?

__ 2 __
> ... he generado una pero el VBA siempre me hace referencia a los tamanos fijos y al nombre del WordArt cuando la cree.
> ... que solo lo aplica a un objeto llamado como el de la macro de origen.

2) si transcribes el codigo, podria +/- "verse" cual es la intencion y/o las propiedades que te interesa modificar -???-
y tambien serviria si piensas aplicar este codigo (solo) al momento de crearlas, o tambien para modiricar otras ya creadas -???-

__ 3 __
> Ademas, los tamanos no los cambia porcentualmente que es lo que me interesa.

3) (nuevamente) es conveniente que detalles con mayor precision -???-

(disculpa, pero creo que existen dos o tres "lagunas" o ambiguedades en la descripcion "del caso") -?-

saludos,
hector.
Respuesta Responder a este mensaje
#2 Héctor Miguel
06/06/2008 - 08:38 | Informe spam
hola, antonio !

__ 1 __
... He creado la macro (a base de rudimentos de acciones, sin VBA) del WordArt del que hablabamos (...)
... el objeto al que hace referencia es "Wordart 5" y no el que yo quiera seleccionar.
Si creo uno nuevo, que obviamente ya no llamara asi, no aplica la macro.



1) para empezar, la macro que expones "vine" de vba en powerpoint, NO vba en excel (como originalmente comentabas)
(por lo pronto) si no tienes forma de indicarle a la macro (exactamente) cual forma es la que necesitas modificar...

a) elimina estas dos instrucciones (de la macro grabada)...
ActiveWindow.Selection.Unselect
ActiveWindow.Selection.SlideRange.Shapes("WordArt 5").Select



b) selecciona (precisamente) la forma que necesitas modificar (de forma manual)
c) el resto del codigo podrias dejarlo "intacto" ;)

__ 2 __
Tambien me referia a los tamanos. He puesto un tamano del 130% de ancho y un decremento al 95% en el alto
pero ha considerado las cifras absolutas y claro, esto no me vale.
El siguiente WordArt o cualquier otro objeto no tiene por que medir lo mismo que "WordArt 5"
y por tanto las cifras absolutas no son validas.
Era a eso a lo que me referia. No se si te hara falta algun dato mas.
Basicamente es que me ensenes a cambiar cifras absolutas por valores relativos
y por otro lado a que la macro se pueda aplicar a cualquier objeto.



2) lo que no se pudo "ver" (o desprender/dilucidar/...) del codigo que usas, es cual seria la "proporcion" entre una forma y otra/s -?-
(p.e.) que determina si algun in/de/cremento es de 130% o 95% en alto/ancho de una forma u otra ?... en "relacion" con que ???

(creo que) en cuanto a lo de aplicar a "cualquier" otra forma (distinta de la que grabo el codigo)...
a menos que encuentres la forma de indicar al codigo "cual" seria la forma "afectable"...
sigue los pasos a) b) y c) del punto anterior

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

__ el codigo expuesto __
Sub WordArt_cambio()
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



__ la consulta original __
__ 1 __
Tengo una hoja de Excel en la que incluyo diversos elementos graficos. Basicamente formas y WordArt.
Me gustaria hacer una macro para que, por ejemplo, los WordArt tuvieran siempre el mismo aspecto.



1) podrias definir (de preferencia +/- exactamente) a que te refieres con ".. siempre EL MISMO aspecto" ?
- (p.e.) que la forma sea SIEMPRE del mismo "tipo/figura/formato/..." ?

__ 2 __
... he generado una pero el VBA siempre me hace referencia a los tamanos fijos y al nombre del WordArt cuando la cree.
... que solo lo aplica a un objeto llamado como el de la macro de origen.



2) si transcribes el codigo, podria +/- "verse" cual es la intencion y/o las propiedades que te interesa modificar -???-
y tambien serviria si piensas aplicar este codigo (solo) al momento de crearlas, o tambien para modiricar otras ya creadas -???-

__ 3 __
Ademas, los tamanos no los cambia porcentualmente que es lo que me interesa.



3) (nuevamente) es conveniente que detalles con mayor precision -???-

(disculpa, pero creo que existen dos o tres "lagunas" o ambiguedades en la descripcion "del caso") -?-
Respuesta Responder a este mensaje
#3 Goldberg00
06/06/2008 - 09:11 | Informe spam
Hola Héctor.

Gracias por tu respuesta... qué rapidez!

tú> 1) para empezar, la macro que expones "vine" de vba en powerpoint, NO
vba en excel (como originalmente comentabas)

yo< sí, en ese momento estaba con PPoint y como WordArt funciona igual que
en Excel, lo hice directamente ahí.


tú> a) elimina estas dos instrucciones (de la macro grabada)...

yo< El primer asunto solucionado. Era muy fácil, pero cuando no tienes ni
idea, ya ves, una cosa tan tonta y la lata que le da a uno.


tú> lo que no se pudo "ver" (o desprender/dilucidar/...) del codigo que
usas, es cual seria la "proporcion" entre una forma y otra/s -?-
(p.e.) que determina si algun in/de/cremento es de 130% o 95% en alto/ancho de una forma u otra ?... en "relacion" con que ???




yo< sí, a lo que me refiero es que, independientemente del tamaño que tenga
el nuevo WordArt o forma creada, yo quiero aumentar su anchura al 130% y su
altura bajarla al 95% (con respecto a nada, es un índice sobre su propio
tamaño).

Mi código, una vez que había aplicado los anteriores cambios porcentuales en
la creación de la macro, devolvía valores absolutos:

.Width = 406.12
.Height = 48.5

Esto era lo que no me valía. Si genero un WordArt mucho más corto y aplico
la macro siempre me va a dejar el tamaño que indica el código y mi objetivo
es incrementar al 130% y bajar la altura al 95%.

Bueno, pues nada, muchas gracias de nuevo y un saludo.

Antonio
Respuesta Responder a este mensaje
#4 Héctor Miguel
06/06/2008 - 09:42 | Informe spam
hola, Antonio !

Gracias por tu respuesta... que rapidez!



(solo porque "andaba cerca del sitio") :))

... una vez que habia aplicado los anteriores cambios porcentuales en la creacion de la macro devolvia valores absolutos:

.Width = 406.12
.Height = 48.5

Esto era lo que no me valia.
Si genero un WordArt mucho mas corto y aplico la macro siempre me va a dejar el tamano que indica el codigo
y mi objetivo es incrementar al 130% y bajar la altura al 95%.



prueba cambiando esa parte del ajuste de dimensiones +/- a lo siguiente:

.Width = .Width * 1.3
.Height = .Height * 0.95

saludos,
hector.
Respuesta Responder a este mensaje
#5 Goldberg00
06/06/2008 - 11:00 | Informe spam
Gracias Héctor.

Lo acabo de hacer y funciona todo perfectamente. Me voy a ahorrar muchísimo
tiempo.

Un saludo cordial.

Antonio

"Héctor Miguel" escribió:

hola, Antonio !

> Gracias por tu respuesta... que rapidez!

(solo porque "andaba cerca del sitio") :))

> ... una vez que habia aplicado los anteriores cambios porcentuales en la creacion de la macro devolvia valores absolutos:
>
> .Width = 406.12
> .Height = 48.5
>
> Esto era lo que no me valia.
> Si genero un WordArt mucho mas corto y aplico la macro siempre me va a dejar el tamano que indica el codigo
> y mi objetivo es incrementar al 130% y bajar la altura al 95%.

prueba cambiando esa parte del ajuste de dimensiones +/- a lo siguiente:

.Width = .Width * 1.3
.Height = .Height * 0.95

saludos,
hector.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida