VBA更改数据透视表源表

时间:2018-12-17 16:01:18

标签: excel vba excel-vba pivot-table

我已经创建了一个程序,该程序可以从另一个工作簿的数据透视表上进行复制,但是我需要它来引用当前文件中的工作表。

因此,例如,在原始文件中,它以“ QueryResults”作为源,在转移后,我需要它在新文件中引用“ QueryResults”。有人对如何执行此操作有任何想法吗?

我尝试重新创建缓存失败,但是在我的代码中运行它时出现错误。

        ActiveWorkbook.PivotCaches.Create _
        (SourceType:=xlDatabase, SourceData:=Worksheets("QueryResults").Range("A1:AY" & _
        Worksheets("QueryResults").Cells(Rows.Count, 1).End(xlUp).Row).Address(External:=True), _
        Version:=xlPivotTableVersion14)

1 个答案:

答案 0 :(得分:0)

尝试

Sub setPivot()
    Dim pv As PivotTable
    Dim Ws As Worksheet
    Dim wsData As Worksheet
    Dim rngDB As Range, strRng As String
    Dim r As Long

    Set Ws = ActiveSheet
    Set pv = Ws.PivotTables(1)

    Set wsData = Sheets("QueryResults")

    With wsData
        r = .Range("a" & Rows.Count).End(xlUp).Row
        Set rngDB = .Range("A1:AY" & r)
    End with
    strRng = rngDB.Address(, , xlR1C1, 1) 'not xlA1
    With pv
        .SourceData = strRng
        .RefreshTable
    End With
End Sub