Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 2013 vba-刷新数据透视表-循环_Vba_Excel - Fatal编程技术网

Excel 2013 vba-刷新数据透视表-循环

Excel 2013 vba-刷新数据透视表-循环,vba,excel,Vba,Excel,我有一些vb代码,可以为我刷新数据透视表,有没有一种方法可以循环,这样我就可以刷新数据透视表1到20?而不是在下面列出20行代码,例如 ActiveWorkbook.PivotTables(1).PivotCache.Refresh ActiveWorkbook.PivotTables(2).PivotCache.Refresh ActiveWorkbook.PivotTables(3).PivotCache.Refresh 等等 非常感谢 试试这个: 选项显式 Sub RefresfPivo

我有一些vb代码,可以为我刷新数据透视表,有没有一种方法可以循环,这样我就可以刷新数据透视表1到20?而不是在下面列出20行代码,例如

ActiveWorkbook.PivotTables(1).PivotCache.Refresh
ActiveWorkbook.PivotTables(2).PivotCache.Refresh
ActiveWorkbook.PivotTables(3).PivotCache.Refresh
等等

非常感谢

试试这个:

选项显式

Sub RefresfPivotTables()

Sheets("YOUR_SHEET").Select

Dim i As Integer

For i = 1 To 20

    ActiveSheet.PivotTables("PivotTable" & i).PivotCache.Refresh

Next i

End Sub
试试这个:

选项显式

Sub RefresfPivotTables()

Sheets("YOUR_SHEET").Select

Dim i As Integer

For i = 1 To 20

    ActiveSheet.PivotTables("PivotTable" & i).PivotCache.Refresh

Next i

End Sub

例如:如果要刷新工作簿中的所有pivot缓存,可以执行以下操作:

Sub RefreshPivotCache()
    Dim ws As Worksheet
    Dim PT As PivotTable

    For Each ws In ActiveWorkbook.Worksheets '<~~ Loop all worksheets in workbook
        For Each PT In ws.PivotTables        '<~~ Loop all pivot tables in worksheet
            PT.PivotCache.Refresh
        Next PT
    Next ws
End Sub
子刷新数据透视缓存()
将ws设置为工作表
数据透视表

例如,对于ActiveWorkbook.Worksheets'中的每个ws:如果要刷新工作簿中的所有pivot缓存,可以执行以下操作:

Sub RefreshPivotCache()
    Dim ws As Worksheet
    Dim PT As PivotTable

    For Each ws In ActiveWorkbook.Worksheets '<~~ Loop all worksheets in workbook
        For Each PT In ws.PivotTables        '<~~ Loop all pivot tables in worksheet
            PT.PivotCache.Refresh
        Next PT
    Next ws
End Sub
子刷新数据透视缓存()
将ws设置为工作表
数据透视表

对于ActiveWorkbook.Worksheets'中的每个ws,您可以使用它,它还将遍历工作簿中的每个工作表,以及每个工作表中的每个透视表,并刷新和更新该表

Sub RefreshPivotData()
Dim pvotCht As PivotTable, Sheet As Worksheet
    For Each Sheet In ThisWorkbook.Worksheets
        For Each pvotTbl In Sheet.PivotTables
            pvotTbl.RefreshTable
            pvotTbl.Update
        Next
    Next
ThisWorkbook.Save
End Sub

您可以使用它,它还将遍历工作簿中的每个工作表,以及每个工作表中的每个透视表,并刷新和更新该表

Sub RefreshPivotData()
Dim pvotCht As PivotTable, Sheet As Worksheet
    For Each Sheet In ThisWorkbook.Worksheets
        For Each pvotTbl In Sheet.PivotTables
            pvotTbl.RefreshTable
            pvotTbl.Update
        Next
    Next
ThisWorkbook.Save
End Sub

嗨,我想这是最好的解决方案,所以我可以指定轴的数量。然而,有时pivot连接到只读文件,只读文件处于打开状态,我可以在vb外部刷新,但当我尝试从vb运行时,会出现1004错误。有什么可以补充的吗?非常感谢!嗨,我想这是最好的解决方案,所以我可以指定轴的数量。然而,有时pivot连接到只读文件,只读文件处于打开状态,我可以在vb外部刷新,但当我尝试从vb运行时,会出现1004错误。有什么可以补充的吗?非常感谢!