Esta es una posible solución para poder crear muuuuchas macros en muy poco tiempo.

25/06/2005 - 10:54 por jose | Informe spam
Madre mia que orgulloso me siento, lo he conseguido, he creado 800 macros en
mas o menos 40 minutos, que pasada no??
Bueno pues os cuento a ver si me explico bien.
He crado una macro a mano (ya sabeis grabando todos los pasos) una vez
creada he ido copiando el código en una hoja nueva por partes, me explico si
la macro era:

Sub pegarA1()
'
' pegar
' Macro grabada el 24/06/2005 por Jose
'

'
Range("D8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=True
Range("D5:D12").Select
Range("D12").Activate
Application.CutCopyMode = False
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Range("A1").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True

Range("D5").Select

Selection.Copy
Range("A1").Select
Sheets("almacén").Select
Range("B2").Select
End Sub



Pues he puesto en la celda A1 (sin los corchetes, claro) [Sub pegar]
en la celda B1 pondre [A1]
en la celda C1 [()
'
' pegar
' Macro grabada el 24/06/2005 por Jose
'

'
Range("]
en la celda D1 [E8]
en la celda E1 [").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=True
Range("]
en la celda F1 [D5]
en la celda G1 [:]
en la celda H1 [D12]
en la celda I1 [").Select
Range("]

y asi hasta completar el código. Al final de la fila hariamos una unión de
todas las celdas, (ya se que algunos preferis hacela con el signo "&" pero
yo he utilizado la función CONCATENAR). Ahora lo que tengo que hacer es
copiar toda la fila hacia abajo (en mi caso 400 filas porque las otras 400
macros eran diferentes, con otro texto, lo haria en otra hoja con los mismos
pasos) y solo nos queda modificar las columa B, D, F, H, ... en mi caso la
diferencia de una macro a otra se conseguia sumandole 8 al numero que hace
referencia la celda, me explico, si en la celda D1 tenemos [E8] en la celda
D2 pondriamos [E16] otro ejemplo seria en la celda H1 [D12] pondriamos en la
celda H2 [D20] y asi sucesivamente. Una vez creado el codigo solo queda
copiarlo y pegarlo en el módulo de la hoja que queramos dejar las macros,
como ya hemos creado una macro le damos a modificar macro y se abre el
editor, ahi es donde pegaremos toda la columa que hemos CONCATENADO. Hay un
pequeño problema, bueno pequeño no, pequeñisimo, nos ha pegado las celdas
con unas comillas de mas, pone al principio y al final de cada macro unas
comillas ["] y donde nos refereimos a celdas tambien, se quitan
perfectamente con la función de reemplazar, ponemos datos a buscar ["Sub] y
a reemplazar con [Sub], asi de facil y con las comillas igual, ponemos a
buscar [(""] y a reemplazar [("] y en el otro lado seria buscar ["")] y
reemplazar con [")].
Claro, este es mi caso, ahora vosotros lo podeis aplicar a vuestras
necesidades, pero oye! ahi está la idea no?
Pues eso es todo chicos, joe, me ha costado mas escribir este mensaje que
crear 800 macros, jejeje

Venga un abrazo.
 

Leer las respuestas

#1 KL
25/06/2005 - 13:06 | Informe spam
Hola Jose,

Me alegra que hayas podido solucionar tu problema. Sin embargo, si todavia
te interesa te digo que tus macros seguramente se podrian mejorar y
probablemente reducir su numero a 1 (!). Solo un ejemplo - el primer macro
que expones se puede representar de la siguiente manera (y eso sin tener muy
claro que es lo que intentas hacer a nivel global):

Sub pegarA1()
With ActiveSheet
.Range("D8").PasteSpecial Paste:=xlPasteValues, _
Transpose:=True
.Range("D5:D12").Interior.ColorIndex = 15
.Protect
.Range("D5").Copy
End With
With Sheets("almacEn")
.Activate
End If
End Sub

Si me envias el fichero igual te doy una solucion mas eficaz.

Saludos,
KL



"jose" wrote in message
news:BZ8ve.1626076$
Madre mia que orgulloso me siento, lo he conseguido, he creado 800 macros
en
mas o menos 40 minutos, que pasada no??
Bueno pues os cuento a ver si me explico bien.
He crado una macro a mano (ya sabeis grabando todos los pasos) una vez
creada he ido copiando el código en una hoja nueva por partes, me explico
si
la macro era:

Sub pegarA1()
'
' pegar
' Macro grabada el 24/06/2005 por Jose
'

'
Range("D8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=True
Range("D5:D12").Select
Range("D12").Activate
Application.CutCopyMode = False
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Range("A1").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True

Range("D5").Select

Selection.Copy
Range("A1").Select
Sheets("almacén").Select
Range("B2").Select
End Sub



Pues he puesto en la celda A1 (sin los corchetes, claro) [Sub pegar]
en la celda B1 pondre [A1]
en la celda C1 [()
'
' pegar
' Macro grabada el 24/06/2005 por Jose
'

'
Range("]
en la celda D1 [E8]
en la celda E1 [").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=True
Range("]
en la celda F1 [D5]
en la celda G1 [:]
en la celda H1 [D12]
en la celda I1 [").Select
Range("]

y asi hasta completar el código. Al final de la fila hariamos una unión de
todas las celdas, (ya se que algunos preferis hacela con el signo "&" pero
yo he utilizado la función CONCATENAR). Ahora lo que tengo que hacer es
copiar toda la fila hacia abajo (en mi caso 400 filas porque las otras 400
macros eran diferentes, con otro texto, lo haria en otra hoja con los
mismos
pasos) y solo nos queda modificar las columa B, D, F, H, ... en mi caso la
diferencia de una macro a otra se conseguia sumandole 8 al numero que hace
referencia la celda, me explico, si en la celda D1 tenemos [E8] en la
celda
D2 pondriamos [E16] otro ejemplo seria en la celda H1 [D12] pondriamos en
la
celda H2 [D20] y asi sucesivamente. Una vez creado el codigo solo queda
copiarlo y pegarlo en el módulo de la hoja que queramos dejar las macros,
como ya hemos creado una macro le damos a modificar macro y se abre el
editor, ahi es donde pegaremos toda la columa que hemos CONCATENADO. Hay
un
pequeño problema, bueno pequeño no, pequeñisimo, nos ha pegado las celdas
con unas comillas de mas, pone al principio y al final de cada macro unas
comillas ["] y donde nos refereimos a celdas tambien, se quitan
perfectamente con la función de reemplazar, ponemos datos a buscar ["Sub]
y
a reemplazar con [Sub], asi de facil y con las comillas igual, ponemos a
buscar [(""] y a reemplazar [("] y en el otro lado seria buscar ["")] y
reemplazar con [")].
Claro, este es mi caso, ahora vosotros lo podeis aplicar a vuestras
necesidades, pero oye! ahi está la idea no?
Pues eso es todo chicos, joe, me ha costado mas escribir este mensaje que
crear 800 macros, jejeje

Venga un abrazo.



Preguntas similares