2017-08-11 216 views
1

我有兩個工作簿;在一個我有一個樞軸表;另一個是空的工作表。將數據透視表中的數據複製到另一個工作表中

我想從數據透視表中的某些數據複製到其他工作簿,但它似乎像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行僅適用於活動工作簿,而不是指向當前的Pivotselection。

謝謝!

+0

你可以'cevesa.Activate'和'cevesa.Worksheets( 「r_hora」)Activate' – Slai

回答

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 
+0

謝謝,這確實管用 –

相關問題