Copiar columnas alternas de tabla dinámica

Hola buenas.
Tengo esta macro que he grabado, su fin es copiar columnas alternas y contiguas de una tabla dinámica a una hoja "plantilla".
En la tabla dinámica la cantidad sumada creo que no puede cambiarse de la última columna, he conseguido lo que quería pero se vuelve un poco loco y luego termina copiando todos los datos en la plantilla, quisiera saber cómo hacerlo sin que parpadee tanto office, y si puedo hacer eso mismo con otras ("INFORD1","INFORD2"etc...) hojas individualmente sin tener que hacer una macro para cada una, no sé si me explique bien, aquí dejo la macro.
Un saludo y muchas graciasSub Macro8()
' actualizar tablas antes de copiar
    ActiveWorkbook.RefreshAll
'
' EXPORTAR EN LA PLANTILLA
'
    Sheets("INFORD1 ").Select
    Range("I4:I49").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("plantilla").Select
    Range("B19:B64").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("INFORD1 ").Select
    Range("J4:J49").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("plantilla").Select
    Range("C19:C64").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("INFORD1 ").Select
    Range("K4:K49").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("plantilla").Select
    Range("F19:F64").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("INFORD1 ").Select
    Range("L4:M49").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("plantilla").Select
    Range("D19:E64").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End Sub

1 respuesta

Respuesta
1
.
Tu macro podría quedar de esta manera. El parpadeo depende de la cantidad de veces que cambias de hoja. En este caso, solamente pude optimizar un cambio.
.
Sub Macro8()
'   actualizar tablas antes de copiar
   ActiveWorkbook.RefreshAll
'
'   EXPORTAR EN LA PLANTILLA
'
   HOJA = InputBox("Nombre de la Hoja: ")
   Sheets(HOJA).Select
   Range("I4:J49").Select
   Selection.Copy
   Sheets("plantilla").Select
   Range("B19:C64").Select
   Selection.PasteSpecial
   Sheets(HOJA).Select
   Range("K4:K49").Select
   Selection.Copy
   Sheets("plantilla").Select
   Range("F19:F64").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
   :=False, Transpose:=False
   Sheets(HOJA).Select
   Range("L4:M49").Select
   Selection.Copy
   Sheets("plantilla").Select
   Range("D19:E64").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
   :=False, Transpose:=False
   Application.CutCopyMode = False
   Range("A1").Activate
End Sub 
.
Copiar de Libro por conocer
.
Para que sea de cualquier hoja, le agregué un InputBox asignado a la variable HOJA, la cual sustituye a todas las referencias de "INFORD1" que tenías..
.
Faltaría agregarle un control que permite elegir, de manera exclusiva, los nombres de las hojas para que no haya lugar a error pero... ya sería otra pregunta.
.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas