代码之家  ›  专栏  ›  技术社区  ›  AmirA

Excel VBA。从Personal创建数据透视表。xlsb公司

  •  0
  • AmirA  · 技术社区  · 7 年前

    当模块直接导入工作簿时,代码工作得非常好。 正在尝试从Personal启动VBA代码。xlsb-给出错误。

    运行时错误“5”
    过程调用或参数无效。)

    Debug.Print ThisWorkbook.PivotCaches.Count 为零,表示缓存中没有数据。

    需要帮助从定义数据源 personal.xlsb

    Worksheets("Sheet1").Activate
    
    Set pc = ThisWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=Sheet1.Name & "!" & Sheet1.Range("A1").CurrentRegion.Address, _
    Version:=xlPivotTableVersion15)
    
    Debug.Print ThisWorkbook.PivotCaches.Count
    
    Worksheets.Add
    ActiveSheet.Name = "PivotTable"
    Range("A3").Select
    
    Set pt = pc.CreatePivotTable( _
        TableDestination:=ActiveCell, _
        TableName:="ReportPivot")'
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Darren Bartrup-Cook    7 年前

    Thisworkbook 始终引用包含代码的工作簿-在本例中是您的个人工作簿。相反,您可能希望引用 Activeworkbook .

    在下面的代码中,我在变量声明之后设置了对ActiveWorkbook的引用。数据透视缓存、数据透视表和任何公式都引用ActiveWorkbook。

    Sub Test()
    
        Dim wrkBk As Workbook
        Dim wrkSht As Worksheet
        Dim wrkSht2 As Worksheet
        Dim pc As PivotCache
        Dim pt As PivotTable
    
        Set wrkBk = ActiveWorkbook
    
        Set wrkSht = wrkBk.Worksheets("Sheet1")
    
        Set pc = wrkBk.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=wrkSht.Range("A1").CurrentRegion.Address, _
        Version:=xlPivotTableVersion15)
    
        Debug.Print wrkBk.PivotCaches.Count
    
        Set wrkSht2 = wrkBk.Worksheets.Add
        wrkSht2.Name = "PivotTable"
    
        Set pt = pc.CreatePivotTable( _
            TableDestination:=wrkSht2.Range("A3"), _
            TableName:="ReportPivot")
    
    End Sub
    
        2
  •  0
  •   AmirA    7 年前

    谢谢这个代码成功了。 -我用ActiveWorkbook替换了此工作簿 -我更换了表1。使用ActiveSheet命名。名称 -我更换了表1。包含ActiveSheet的范围。范围

    ' 工作表(“表1”)。使活动

    Set pc = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=ActiveSheet.Name & "!" & 
    ActiveSheet.Range("A1").CurrentRegion.Address, _
    Version:=xlPivotTableVersion15)
    
    Debug.Print ActiveWorkbook.PivotCaches.Count
    
    Worksheets.Add
    ActiveSheet.Name = "PivotTable"
    Range("A3").Select
    
    Set pt = pc.CreatePivotTable( _
        TableDestination:=ActiveCell, _
        TableName:="ReportPivot")'