2011-12-14 3 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

Работает! Thankss. –

0

Каждый лист должен представлять коллекцию PivotTables; Вы можете цикл через каждый лист ищет листы, которые имеют .PivotTables.Count > 0 и затем петлю через PivotTables на этой 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

Этот код просто не работает и он не возвращает никакой информации. Кроме того, декларации не должны выполняться снова и снова в циклах. –

+0

Пропустил ошибку копирования и вставки (спасибо!); в противном случае он работал нормально - на самом деле, помимо проверки сводной таблицы, наш код является одинаковым с точки зрения циклов. Я хотел продемонстрировать OP две вещи; цикл рабочего листа и сборку сводных таблиц, а также отображение некоторых типичных свойств. Я ожидаю, что кто-то захочет f8 через код, чтобы увидеть, как работает каждый бит. Ваш вопрос об объявлении переменных в циклах является интересным, хотя - он действительно может зависеть. Я предпочитаю объявлять переменные рядом с тем, где я использую их для возможности чтения и видимости, особенно в больших модулях. – dash

+0

Я поддержал вас за более сжатое решение :-) – dash

Смежные вопросы