将数据从一个工作表中的数据透视表复制到另一个工作表中

时间:2017-08-11 12:04:29

标签: excel vba excel-vba

我有两本工作簿;在一个我有一个数据透视表;在另一个,一个空的工作表。

我正在尝试将数据透视表中的某些数据复制到另一个工作簿,但似乎VBA没有复制我的选择。

目前我写道:

With cevesa.Worksheets("r_hora")

    On Error Resume Next
    .PivotTables("r_hora").PivotFields("PARAM").ClearAllFilters
    .PivotTables("r_hora").PivotSelection = "PARAM['DEM(MW)':'DEM_AGREGADA(MW)','POT(MW)':'POT_HID(MW)','POTDESP(MW)']"
    Selection.Copy

    analisis.Worksheets("DATOS Generación").Range("B1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    On error goto 0

End with

但是,除非我使用数据透视表手动激活工作簿,否则这不会起作用。在我看来,selection.copy行仅适用于活动工作簿,而不是指向当前的数据透视选择。

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试下面的代码,代码注释中的解释:

Option Explicit

Sub CopyPivotItemsDataRange()

Dim PvtTbl As PivotTable
Dim PvtFld As PivotField
Dim PvtRng As Range

' set the Pivot-Table object
Set PvtTbl = cevesa.Worksheets("r_hora").PivotTables("r_hora")

' set the Pivot-Table Field object
Set PvtFld = PvtTbl.PivotFields("PARAM")

With PvtFld
    .ClearAllFilters
    ' use Union to merge multipe Pivot Items DataRange
    Set PvtRng = Union(.PivotItems("DEM(MW)").DataRange, .PivotItems("DEM_AGREGADA(MW)").DataRange, _
                .PivotItems("POT(MW)").DataRange, .PivotItems("POT_HID(MW)").DataRange)
End With

PvtRng.Copy

' I let you finish the Paste section

End Sub