Excel VBA ou VSTO - como você loop sobre campos em uma tabela dinâmica?
-
19-08-2019 - |
Pergunta
Aqui está um código VBA de exemplo:
Sub Macro1()
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("SomePivotTable")
'Set colOfFields = pt.PivotFields
End Sub
A terceira linha está incompleta / quebrado. Qual é a maneira correta para obter acesso a coleção de todos os campos em uma tabela dinâmica? Eu preciso ser capaz de loop sobre eles. codificação real está sendo feito em C # Projeto VSTO.
Solução
Isso funciona para mim (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
Outras dicas
Ok. Encontrado alguns C # ideias de código -flavored de:
http: //blogs.msdn. com / andreww / Arquivo / 2008/07/25 / criando-a-tabela dinâmica-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
}
O truque está passando na System.Type.Missing para obter a "coleção" de campos de volta.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow