Excel VBA или VSTO. Как выполнить цикл по полям в сводной таблице?
Вот пример кода VBA:
Sub Macro1()
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("SomePivotTable")
'Set colOfFields = pt.PivotFields
End Sub
Третья строка является неполной / прерывистой. Как правильно получить доступ к коллекции всех полей в сводной таблице? Я должен быть в состоянии зациклить их. Актуальное кодирование выполняется в проекте C# VSTO.
2 ответа
Решение
Это работает для меня (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
Хорошо. Найдены некоторые идеи кода на C#:
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, чтобы вернуть "коллекцию" полей.