¿Cómo unir dos macros de un único módulo?

Tengo dos macros en un único modulo que hacen dos tablas dinámicas en dos hojas distintas. Lo que busco es unir las dos macros para que las dos tablas se realicen seguidas sin tener que ejecutar la segunda macro.

1 respuesta

Respuesta
1

Un botón asignado a una macro que estará en cualquier módulo.

Esa macro contendrá estas instrucciones:

Sub macroGeneral()

Call Macro1

Call Macro2

End Sub

¿Reemplazá cada Macro? Por los nombres de las tuyas.

Tené presente que cada una seleccione o active previamente la hoja con la que trabajará.

Sdos y no dejes la consulta sin finalizar

Hola Elsa, muchas gracias, lo he probado y me funciona a medias.. te explico...

He juntado 4 macros según las instrucciones que me has dado.

La primera, parte una hoja en varios archivos y los guarda, la segunda hace una tabla dinámica en una hoja del mismo archivo en el que se encuentra la macro, la tercera tiene que hacer otra tabla dinámica en otra hoja distinta del mismo archivo y por último la cuarta hace una tercera tabla en otra hoja del mismo archivo.

Las macros por separado funcionan todas, incluso la primera y la segunda juntas terminan el proceso correctamente, pero a la hora de hacer la segunda tabla dinámica, la macro que unifica las cuatro macros falla y ya no continúa con el proceso.

Te paso tal y como la tengo

Call PARTIR_ZONA_PMC
Call Macro_comercial
Call Macro_Org
Call Macro_Area
End Sub

Esta macro, falla a la hora de llamar a la Macro_Org y me señala lo siguiente:

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Fact-PMC fitrado'!R1C1:R6224C14").CreatePivotTable TableDestination:="", _
TableName:="Tabla dinámica10", DefaultVersion:=xlPivotTableVersion10

Me puedes ayudar??

Gracias,

Primero confirmá que la macro ORG funciona x sí sola.

Si es así, es xq con las otras macros te quedaste en otra hoja. Eso te mencionaba en respuesta anterior; '...Tené presente que cada una seleccione o active previamente la hoja con la que trabajará...

La macro Org debe empezar con la línea que active su hoja

Sub Macro_Org()

Sheets(la que sea).Select

Y lo mismo para la 4ta macro.

¿Ahora sí quedó resuelto?, si necesitas algo más podes volver a presionar Aclaraciones, sino debes Finalizar.

Sdos

Elsa

Hola Elsa, mi problema es que no se realmente como indicar en la macro la hoja con la que debe trabajar. La macro por sí sola sí funciona pero al ejecutarla junto con las demás no.

Aunque en tu respuesta me dices que añada

Sub Macro_Org()
Sheets(la que sea).Select

no se como tengo que indicarle la hoja. El código de la macro empieza exactamente igual que el de la Macro_comercial.

Sub Macro_Org()
'
' Macro_Org Macro
'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Fact-PMC fitrado'!R1C1:R6224C14").CreatePivotTable TableDestination:="", _
TableName:="Tabla dinámica10", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tabla dinámica10").AddFields RowFields:=Array( _
"Organización", "Datos")
With ActiveSheet.PivotTables("Tabla dinámica10").PivotFields("Saldo Inicial")
.Orientation = xlDataField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabla dinámica10").PivotFields("Saldo Periodo")
.Orientation = xlDataField
.Position = 2
End With
ActiveSheet.PivotTables("Tabla dinámica10").PivotFields("Facturación"). _
Orientation = xlDataField
ActiveSheet.PivotTables("Tabla dinámica10").PivotSelect "", xlDataAndLabel, _
True
ActiveSheet.PivotTables("Tabla dinámica10").Format xlReport4
With ActiveSheet.PivotTables("Tabla dinámica10").PivotFields("Área")
.Orientation = xlRowField
.Position = 2
End With
End Sub

Gracias,

Resumiendo tu lista de macros vamos x partes:

Call PARTIR_ZONA_PMC
Call Macro_comercial

Estas 2 corren bien según me comentas. Ahora falta saber en qué hoja quedó activa.

Ahora seguiría Macro_Org y fijate que hace mención a ActiveSheet en varias partes:

Sub Macro_Org()
'
' Macro_Org Macro
'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Fact-PMC fitrado'!R1C1:R6224C14").CreatePivotTable TableDestination:="", _
TableName:="Tabla dinámica10", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tabla dinámica10").AddFields RowFields:=Array( _
"Organización", "Datos")

Entonces tenés que asegurar la hoja activa para que luego pueda encontrar la Tabla dinámica 10

Entonces las instrucciones debieran seguir este hilo:

Call PARTIR_ZONA_PMC
Call Macro_comercial

Sheets("Hoja.... de la tabla 10").Select

Call Macro_Org

'y lo mismo para la otra rutina

Si no le encontrás la vuelta enviame tu libro al correo que encontrarás en mi sitio que dejo al pie, No olvides recordarme el tema que nos ocupa.

Y... ¿cómo anduvo todo?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas