Imprimir página | Cerrar ventana

Tablas dinamicas

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Visual Basic Clásico (VB3...VB6)
Descripción del foro: Foro de Visual Basic (No VBA)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=83647
Fecha de impresión: 20/Septiembre/2019 a las 09:47


Tema: Tablas dinamicas
Publicado por: hivedc
Asunto: Tablas dinamicas
Fecha de publicación: 20/Abril/2018 a las 22:03
Muy buenas tardes, primero felicitarlos por ser parte de este foro tan completo y útil. Les cuento, soy nuevo en este y en el mundo del VB. En la universidad me enseñaron JavaScript, por lo que entiendo como funciona la programación. Ahora en el trabajo, metido siempre en excel, estoy intentando automatizar la creación de tablas dinámicas leyendo datos descargados del programa de la empresa (excel). Me conformaría con no tener que hacer las tablas dinamicas para poder sacar la información que necesito sin trabajar de más.

Viendo un video en youtube, pude entender mas o menos como crear las tablas dinamicas pero me sale un error al correr el codigo. A continuación les copio el codigo:

Sub CrearTablaDinamica()

Dim WSD1 As Worksheet
Dim WSD2 As Worksheet
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim PRange As Range
Dim FinalRow As Long

Set WSD1 = Worksheets("TablaDinamica")

'Borra la tabla dinamica que se encuentra en la hoja tabladinamica
For Each PT In WSD1.PivotTables
        PT.TableRange2.Clear
    Next PT
    
'Definir el area de entrada y definir cache dinamico
Set WSD2 = Worksheets("srirmam")
FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row
Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 6)

'Nos situamos en la hoja con los datos
'Define la variable PTCache como valor intermedio necesario para la creación de la tabla dinamica
Sheets("srirmam").Select
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)

'se crea una tabla dinamica en blanco
'especificamos la ubicación de salida y nombre de la tabla
Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets("TablaDinamica").Range("B3"), TableName:="PivotTable1")

'se aplica formato predefinido

PT.Format xlReport6               --> De aquí para abajo me da error. (aunq borre esta linea y la de actualización automática, sale error en la linea de PT.AddFields RowFields:=Array("RUT", "TRANSACCION") 
'actualización automática
PT.ManualUpdate = True

PT.AddFields RowFields:=Array("RUT", "TRANSACCION")   


With ActiveSheet.PivotTables("TablaDinamica").PivotFields("RUT")   --> también da error si borro las o tras q dan error
    .Orientation = xlDataField
    .Function = xlCount
    .Position = 1
    .Caption = "Total rut"
    End With
    
    
End Sub

Cosas que hay que saber de mi excel: 

TablaDinamica = hoja nueva con ese nombre
srirmam = Hoja donde estan los datos
RUT = Titulo de columna de la hoja de datos(srirmam)
TRANSACCION = Titulo de columna de la hoja de datos(srirmam)

Les pido por favor si pueden guiarme ya que soy bastante nuevo en este mundo y necesito automatizar esto para no perder tiempo. Si tienen otro ejemplo de como crear una tabla dinamica cn VB se agradecería enormemente.

Saludos



Respuestas:
Publicado por: pitxiku
Fecha de publicación: 21/Abril/2018 a las 15:08
Entiendo que todo este código lo tienes dentro de Excel. Si es así, tendrás que avisar para que un/a moderador/a mueva el hilo al foro de Excel, donde te podrán ayudar más y mejor. Visual Basic clásico es/era un lenguaje de programación independiente, y no el Visual Basic para aplicaciones (VBA) que hay dentro de los programas de Office.

Entre tanto, tal vez esta página te sirva de ayuda:

- https://msdn.microsoft.com/es-es/library/office/hh243933(v=office.14).aspx



Imprimir página | Cerrar ventana