2008-12-04 2 views
2

Ниже приведен пример VBA код:Excel VBA или VSTO - Как вы перебираете поля по сводной таблице?

Sub Macro1() 
    Dim pt As PivotTable 
    Set pt = ActiveSheet.PivotTables("SomePivotTable") 
    'Set colOfFields = pt.PivotFields 
End Sub 

Третья строка является неполным/сломана. Каков правильный способ получить доступ к коллекции всех полей в сводной таблице? Мне нужно уметь перебирать их. Фактическое кодирование выполняется в проекте C# VSTO.

ответ

3

Это работает для меня (Excel 2003 [11.8146.8202] SP2):

Sub Macro1() 
    Dim pt As PivotTable 
    Dim col As PivotFields 
    Dim c As PivotField 

    ' Name of the pivot table comes from right clicking on the pivot table, 
    ' Table Options..., Name field. 
    Set pt = ActiveSheet.PivotTables("PivotTable1") 
    Set col = pt.PivotFields 
    For Each c In col 
     Debug.Print c.Name 
    Next 
End Sub 
+0

Хммм. Позвольте мне проверить это на VSTO-земле. Что такое тип данных col? – BuddyJoe 2008-12-04 17:57:23

1

Ok. Найдено некоторые C# -flavored идеи код из:
http://blogs.msdn.com/andreww/archive/2008/07/25/creating-a-pivottable-programmatically.aspx

// pvtTable is an Excel.PivotTable set earlier in the code 
Excel.PivotFields pflds =  
    (Excel.PivotFields)pvtTable.PivotFields(System.Type.Missing); 
    foreach (Excel.PivotField pf in pflds) 
    { 
     //some code here 
    } 

Уловка проходит в System.Type.Missing, чтобы получить «коллекцию» полей обратно.

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