Aplicar Macros en Varios Libros

Buenas Tardes:
Mi pregunta es la siguiente, tengo varios libros a los que tengo que hacerles una tabla dinámica, cree una macro para esto pero en el momento que voy a ejecutar la macro en un libro diferente no la toma porque la hoja tiene un nombre diferente al del código, intente hacerlo con active sheet pero no funciona.
Agradezco su colaboración
Juan D. Román

1 Respuesta

Respuesta
1
Si cada libro tiene la macro, con utilizar ActiveSheet debiera andar.
Si la colocaste en el libro Personal, quizás estás utilizando otra expresión como el nombre del libro...
Quizás sea mejor que escribas la rutina (y aclares dónde está guardada) para que podamos ayudarte.
La macro esta guardada en el libro personal y dice así:
Sub Cuentas()
'
' Cuentas Macro
'
' Acceso directo: Ctrl+Mayús+C
'
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
    ActiveCell.FormulaR1C1 = "NIT"
    Columns("C:C").Select
    Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
    Columns("F:F").Select
    Selection.TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
    Columns("I:I").Select
    Selection.TextToColumns Destination:=Range("I1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True
    Cells.Select
    With Selection.Font
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 1
    End With
    Cells.EntireColumn.AutoFit
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Interior.ColorIndex = 11
    Selection.Font.ColorIndex = 2
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("A1:A65535").Select
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "DETALLE!R1C1:R65535C13").CreatePivotTable TableDestination:="", TableName _
        :="Tabla dinámica1", DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
    ActiveSheet.Cells(3, 1).Select
    ActiveSheet.PivotTables("Tabla dinámica1").AddFields RowFields:=Array( _
        "CTA_REVCHAIN", "NUMERO_CONEXION", "OFERTA"), PageFields:="RAZON_SOCIAL"
    ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NIT").Orientation = _
        xlDataField
    ActiveWindow.TabRatio = 0.397
    Sheets("Hoja1").Select
    Sheets("Hoja1").Name = "TOTAL X CUENTA"
    Cells.Select
    With Selection.Font
        .Name = "MS Sans Serif"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 1
    End With
    With Selection.Font
        .Name = "Arial"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = 1
    End With
    Cells.EntireColumn.AutoFit
    Range("B6").Select
    ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NUMERO_CONEXION"). _
        Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    ActiveWorkbook.ShowPivotTableFieldList = False
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Cells.Select
    Cells.EntireColumn.AutoFit
    Cells.EntireColumn.AutoFit
    Range("A1").Select
    Columns("A:A").ColumnWidth = 5
    Range("B7").Select
    ActiveSheet.PivotTables("Tabla dinámica1").PivotSelect _
        "CTA_REVCHAIN[All;Total]", xlDataAndLabel, True
    With Selection.Interior
        .ColorIndex = 37
        .Pattern = xlSolid
    End With
    Range("A1").Select
    Sheets("DETALLE").Select
    Range("A1").Select
    Sheets("TOTAL X CUENTA").Select
End Sub
Espero me puedan colaborar con mi inquietud, Gracias
Primero debes guardar en una variable el nbre de la hoja que utilizarás en lugar de DETALLE, por ej:
nbreHoja = "JUAN"
Luego en la instrucción donde hace mención a la hoja DETALLE, reemplazar esto por la variable armando una cadena con el rango. Ej:
cadena = nbreHoja & "!R1C1:R65536C1" (quizás falten algunas comillas)
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= cadena)_
.CreatePivotTable TableDestination:="", TableName _
:="Tabla dinámica1", DefaultVersion:=xlPivotTableVersion10
También tendrás que tener en cuenta que estás haciendo mención a Tabladinámica1. Verifica si siempre será la primer tabla del libro.
Saludos y no olvides de finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas