首页 > 解决方案 > 生成数据透视表时如何在录制的宏 (VBA) 中使用动态源数据

问题描述

我在个人工作簿中记录的几个宏遇到问题。源数据每天都在变化,这反映在文件名中。录制的宏仍然具有创建之日的文件名,但我需要它来更新新文件名或简单地从当前打开的工作簿/工作表中选择数据源。我对 excel 和 vba 很陌生,所以最好进行简单的修复。谢谢!

    Sub MC_PIVOT()
    '
    ' MC_PIVOT Macro
    '

    '
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "MC_20201106!R1C1:R27951C48", Version:=6).CreatePivotTable TableDestination _
        :="Sheet1!R3C1", TableName:="PivotTable1", DefaultVersion:=6

标签: excelvbapivot

解决方案


通常你会做这样的事情来从活动工作表中的数据创建一个数据透视表

    Dim wb As Workbook, wsSource As Worksheet, wsDest As Worksheet
    Dim pc As PivotCache, pt As PivotTable
    
    Set wb = ActiveWorkbook
    Set wsSource = ActiveSheet
    Set wsDest = wb.Sheets.Add(after:=wb.Sheets(wb.Sheets.Count))
    wsDest.Name = "Pivot"
    
    'create the pivot cache first
    Set pc = wb.PivotCaches.Create(SourceType:=xlDatabase, _
               SourceData:=wsSource.Range("A1").CurrentRegion, Version:=6)

    '...then the pivottable
    Set pt = pc.CreatePivotTable(TableDestination:=wsDest.Range("A3"), _
                                 TableName:="PivotTable1", DefaultVersion:=6)


推荐阅读