no se puede crear un pivote usando una macro si los datos solo se obtienen de db

Estoy creando una macro en la que obtengo algunos datos de db y luego creo un pivote de esos datos. pero mientras hago esto recibo un error 1004 con algunos comentarios. aquí está mi código

     Sub CreatePivot()
     Dim objTable As PivotTable, objField As PivotField
     ActiveWorkbook.Sheets("data").Select
' data is name of the sheet 
     Range("A1").Select
    **Set objTable = Sheet1.PivotTableWizard**
     Set objField = objTable.PivotFields("name")
        objField.Orientation = xlRowField
        Set objField = objTable.PivotFields("location")
        objField.Orientation = xlRawField
        Set objField = objTable.PivotFields("blaa")
        objField.Orientation = xlRowField
        ' Specify a data field with its summary
        ' function and format.
        Set objField = objTable.PivotFields("money")
        objField.Orientation = xlDataField
        objField.Function = xlSum
        objField.NumberFormat = " #,##0"

        ' Specify a page field.
        'Set objField = objTable.PivotFields("GENDER")
        'objField.Orientation = xlPageField

        ' Preview the new PivotTable report.
        ActiveSheet.PrintPreview

        ' Prompt the user whether to delete the PivotTable.
        Application.DisplayAlerts = False
        If MsgBox("Delete the PivotTable?", vbYesNo) = vbYes Then
            ActiveSheet.Delete
        End If
        Application.DisplayAlerts = True

    End Sub

el error dice que obtuve este error de tiempo de ejecución '1004': - Este comando requiere al menos dos filas de datos de origen. No puede usar el comando en una selección en una sola fila. Intente lo siguiente: si está utilizando un filtro avanzado, seleccione un rango de celdas que contenga al menos dos filas de datos. Luego haga clic en el comando Filtro avanzado nuevamente. Si está creando un informe de tabla dinámica o un informe de gráfico dinámico, escriba [se detiene aquí]

aquí está mi código atascado Establecer objTable = Sheet1.PivotTableWizard

cuando el mismo código que uso al tomar datos nuevos, entonces está funcionando. aquí busco datos de db usando btn_click y dos macros detrás de eso. Una macro obtiene datos, luego con la segunda macro en creat pivot está allí. pero el tema viene. ¿Alguien puede ayudar en esto?

preguntado el 16 de abril de 13 a las 08:04

gracias mike Intenté el siguiente enfoque. pero no puede usar el caché dinámico. ¿Pueden ayudarme a actualizar mi código? Leí sobre pivotcache pero no entiendo cómo usarlo aquí. -

1 Respuestas

Salvo omisión, no veo que hayas declarado Sheet1 As Worksheet .... por defecto se inicializaría como un Variant y por lo tanto no entregaría el objeto adecuado a la PivotTableWizard método.

Además la descripción del PivotTableWizard (Excel 2010) dice que

Este método no está disponible para fuentes de datos OLE DB. Use el método Add para agregar una memoria caché de tabla dinámica y luego cree un informe de tabla dinámica basado en la memoria caché.

Respondido 16 Abr '13, 09:04

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.