Excel - Simplificar macro excel

 
Vista:
sin imagen de perfil

Simplificar macro excel

Publicado por glutal (4 intervenciones) el 13/10/2016 16:54:23
Hola!!


Me podeis ayudar a simplificar esta macro con el fin de que vaya más rápida y asi optimizarla?
Adjunto archivo ya que debido al número de caracteres no es posible ponerlo en el mensaje


Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Simplificar macro excel

Publicado por Antoni Masana (2477 intervenciones) el 14/10/2016 08:13:36
Buenos días Glutal.

Como poder puedo ayudarte y asi "a ojo de buen cubero" seguro que se puede dejar en la mitad o menos.

Pero antes hacen falta algunos detalles.

- Para que sirve la macro
- Que hace.
- Banco de pruebas.
- Comentarios.

Hace falta explicar que se pretende conseguir, como lo hace o lo intenta, donde reside la macro, tener unos ficheros de pruebas y en la propia macro explicar paso a paso que se esta haciendo con unos simple comentarios.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Simplificar macro excel

Publicado por Glutal (4 intervenciones) el 14/10/2016 09:05:00
Hola!!
Gracias por contestar, pues la macro en el fondo es para algo muy sencillo tengo un informe creado en un documento y lo que quiero es que dicha macro me cree el informe en una lobro nuevo en diferentes hojas sin formulas y con el mismo formato del informe de origen.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Simplificar macro excel

Publicado por Antoni Masana (2477 intervenciones) el 14/10/2016 13:26:21
Deberias adjuntar el documento para ver como trabaja la macro y poder modificarla.

Que esta macro hace lo que deseas que haga seguro que lo hace, pero la mejor forma de simplificar es entendiendo que es lo que hace.

Te pongo un ejemplo con las primeras líneas del codigo:

1
2
3
4
5
6
7
8
9
10
11
12
Application.ScreenUpdating = False
    ChDir "C:\Users\grubio\Documents\Informes de Ventas"
    Workbooks.Open Filename:= _
        "C:\Users\grubio\Documents\Informes de Ventas\Libro1.xlsx"
    Windows("Informe de Ventas por Producto.xlsm").Activate
    Range("B2:B7").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range("B2:X7").Select
    Selection.Copy
    Windows("Libro1.xlsx").Activate
    Range("B4").Select
    ActiveSheet.Paste

Por ejemplo no entiendo que se pretende hacer en las líneas 6, 7 y 8.

Tengo una macro en un libro que se llama ACTUALIZAR.xlsm que modifica hojas de un libro para crear uno nuevo, mis formatos y tipo de datos son diferentes pero en el fondo es lo mismo.

Tengo un libro de Macros que Abre el libro, en tu caso seria "Informes de Ventas" que CORTA, PEGA, RENOMBRA y otras marranadas y me genera un nuevo libro con los cambios realizados y tengo el libro de "Informe de Ventas" como el "Nuevo Informe de Ventas" sin la Macro.

¿Como se hace? Hay ciertos trucos para optimizar tanto el tiempo como el código.

Te cuento un par de ellos

- Usar tablas con los bloques que se desea copiar para parametrizar la copia en una función
- Crear las hojas nuevas en el mismo libro. Copiar de la vieja a la nueva y borrar la vieja
- Copiar sin enviar al portapapeles y en una sola línea. ( líneas del 8 al 12 )
- Renombrar el libro modificado, guardarlo y cerrarlo.

Bueno en realidad son cuatro pero es que soy de mal contar.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Simplificar macro excel

Publicado por glutal (4 intervenciones) el 17/10/2016 18:37:29
Hola,

te envio el archivo donde está alojada la macro para que puedas un poco ver de donde sale, y por otro lado el archivo que finalmente se crea.

gracias

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Simplificar macro excel

Publicado por Antoni Masana (2477 intervenciones) el 18/10/2016 13:35:47
Te adjunto la Macro con algunos comentarios.

Dale un vistazo para ver si se entiende lo que comento, no es fácil pero la he ejecutado y me resulta difícil definir que estas haciendo, entiendo que copias bloques de datos que tienen formulas a un libro nuevo como valores, pero esta macro esta creada con la opción de grabar macro, esto esta bien pero ahora entra en acción el programador para controlar los posibles errores hacer la macro más amigable.

Si te resulta difícil entenderlo seguimos en contacto.

Saludos
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Simplificar macro excel

Publicado por glutal (4 intervenciones) el 18/10/2016 16:51:29
hola!!

Lo primero gracias por la macro, lo entiendo bien, después de revisarla me indicas que creando una tabla en la que se indiquen tanto el origen del area a copiar el destino y la celda se podría simplificar, lo que no me queda claro es la instrucción vba que debería utilizar para que leyera dicha tabla?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Simplificar macro excel

Publicado por Antoni Masana (2477 intervenciones) el 19/10/2016 13:15:51
La idea es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
sub Informe()
    dim Orig(22) as string, area(22) as string, Dest(22) as string, Celda(22) as string
 
    Orig( 1)="Fechas"        : Area ( 1)="B2:X7"
    Dest( 1)="Venta"         : Celda( 1)="B4"
 
    Orig( 2)="Fechas"        : Area ( 2)="C2:X7"
    Dest( 2)="Venta"         : Celda( 2)="C4"
 
    Orig( 3)="VENTA VALIDADA": Area ( 3)="B2:X7"
    Dest( 3)="Venta"         : Celda( 3)="B13"
 
    Orig( 4)="VENTA VALIDADA": Area ( 4)="C2:X7"
    Dest( 4)="Venta"         : Celda( 4)="C13"
 
    Orig( 5)="VENTA INSTALADA": Area ( 5)="C2:X7"
    Dest( 5)="Venta"          : Celda( 5)="B22"
 
    ...
 
    For a=1 to 22
        Copy_Paste Orig(a), Area(a), Dest(a), Celda(a)
    Next
 
    ...
End Sub
 
 
Private Sub Copy_Paste (Orig, Area, Dest, Celda)
 
    Windows(Libro_Origen).Activate
    Sheets(Orig).Select:Range(Area).Select: Selection.Copy
 
    Windows(Libro_Destino).Activate
    Sheets(Dest).Select: Range(Celda).Select
 
    Selection.PasteSpecial Paste:=xlPasteValues, _
                           Operation:=xlNone, _
                           SkipBlanks:=False, _
                           Transpose:=False
End Sub

Es un ejemplo basico pero es para darte una idea de lo que proponia.

Los punto suspensivos antes del FOR es donde completas la tabla, creas el libro nuevo, las hojas y renómbras.
En los puntos suspensivos después del for es donde acabas de dar formatos, textos, cabeceras y guardas el archivo nuevo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar