2011-12-14 139 views
3

有人能告訴我如何找到工作簿(或工作表)中的所有數據透視表?在某些情況下,數據透視表可能隱藏在一個非常大的Excel表格中,或很難找到。如果我至少可以得到數據透視表所在的單元格地址或範圍,那就太棒了。查找excel 2007樞軸表

謝謝。

回答

7

這應該爲你工作。它將結果打印到立即窗口:

Sub FindPivotTables() 
    Dim wst As Worksheet 
    Dim pvt As PivotTable 
    ' loop through all sheets and print name & address of all pivot tables 
    For Each wst In ActiveWorkbook.Worksheets 
     For Each pvt In wst.PivotTables 
      Debug.Print wst.Name, pvt.TableRange2.Address, pvt.Name 
     Next pvt 
    Next wst 
End Sub 
0

每個工作表都會顯示一個PivotTables集合;可以遍歷每個工作表查找具有通過PivotTables一個.PivotTables.Count > 0,然後循環對sheeet找到你正在尋找一個表:

Sub Test() 

    Dim pTable As pivotTable 

    Dim ws As Worksheet 

    For Each ws In ActiveWorkbook.Worksheets 

     Dim pivotTableCount 

     pivotTableCount = ws.PivotTables.Count 

     If pivotTableCount > 0 Then 

      For Each pTable In ws.PivotTables 

       Dim pivotTableName As String 
       pivotTableName = pTable.Name 

       Dim pivotTableTopLeftCell As String 
       pivotTableTopLeftCell = pTable.Location 

      Next pTable 

     End If 



    Next ws 


End Sub 
+1

此代碼只是不起作用,它不返回任何信息。而且,這些聲明不應該在循環中反覆進行。 – 2011-12-15 05:08:09

+0

錯過了複製和粘貼錯誤(謝謝!);否則它工作正常 - 事實上,除了pivotTableCount檢查,我們的代碼在循環方面是相同的。我想向OP展示兩件事情;工作表循環和數據透視表集合,以及顯示一些典型屬性。我希望有人願意通過代碼f8來看看每個位的工作原理。關於在循環中聲明變量的觀點雖然很有趣 - 它確實依賴於它。我更喜歡將變量聲明爲靠近我使用它們的地方,以便可讀性和範圍,特別是在較大的模塊中。 – dash 2011-12-15 09:11:33