如果仅从db获取数据,则无法使用宏创建数据透视表

时间:2013-04-16 07:28:05

标签: excel excel-vba excel-2010 vba

我正在创建一个宏,我从db中获取一些数据,然后创建该数据的数据透视。但在这样做时,我得到了一些评论的1004错误。 这是我的代码

     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

错误在说 我得到此运行时错误'1004': - 此命令至少需要两行源数据。您不能仅在一行中的选择上使用该命令。请尝试以下操作:如果您使用的是高级过滤器,请选择包含至少两行数据的单元格范围。然后再次单击“高级筛选”命令。如果您要创建数据透视表或数据透视图报表,请键入[它在此处停止]

这是我的代码卡住设置objTable = Sheet1.PivotTableWizard

当我使用相同的代码时,通过获取新数据然后它的工作。在这里我使用btn_click从db获取数据,然后在那个宏后面有两个宏。一个宏获取数据,然后在creat pivot上有第二个宏。但问题即将来临。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

除了遗漏之外,我没有看到您已声明Sheet1 As Worksheet ....默认情况下,它会被初始化为Variant,因此无法将正确的对象传递给{{1}方法。

此外,PivotTableWizard(Excel 2010)的说明是

此方法不适用于OLE DB数据源。使用Add方法添加数据透视表缓存,然后根据缓存创建数据透视表。

相关问题