none
Filtrar tabela dinâmica do PowerPivot usando Macro RRS feed

  • Pergunta

  • Boa tarde,

    Estou com o seguinte problema : uso o PowerPivot para acessar uma base de dados Oracle e obter dados para alimentar meus relatórios, porem gostaria de alterar os valores dos filtros das tabelas dinâmicas ao alterar o valor de uma celula no cabeçalho da minha planilha principal para isso tentei criar uma macro usando o gravador de macro que me gerou o seguinte código:

    Sub Filtro()
    '
    ' Filtro Macro
    '

    '

    Sheets("carteira2").Select ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields( _ "[clientes].[CODUSUR1].[CODUSUR1]").ClearAllFilters ActiveSheet.PivotTables("Tabela dinâmica3").PivotFields( _ "[clientes].[CODUSUR1].[CODUSUR1]").CurrentPageName = _ "[clientes].[CODUSUR1].&[6.]"

    End Sub

    gostaria de alterar esse fim do codigo: ""[clientes].[CODUSUR1].&[6.]"" com o valor de uma outra celula por exemplo "A1"

    Desde ja agradeço a quem puder ajudar 

    terça-feira, 30 de setembro de 2014 18:20

Respostas

  • ActiveSheet.PivotTables("PivotTable1").PivotFields("[Customers]").CurrentPageName = "[Customers].[All Customers].[USA]"
    Note que a expressão [Customers], que é o nome do campo repete. Na célula A1, você está repetindo o nome do campo?
    


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 9 de outubro de 2014 21:27
    Moderador

Todas as Respostas

  • Tente usar o código abaixo:

    Sub Filtro()
      Dim ws As Excel.Worksheet
      Dim pvt As Excel.PivotTable
      Dim pvf As Excel.PivotField
      
      Set ws = ThisWorkbook.Worksheets("carteira2")
      Set pvt = ws.PivotTables("Tabela dinâmica3")
      Set pvf = pvt.PivotFields("[clientes].[CODUSUR1].[CODUSUR1]")
      
      pvf.ClearAllFilters
      pvf.CurrentPageName = ws.Range("A1")
    End Sub
     
    


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 2 de outubro de 2014 21:27
    Moderador
  • Bom dia 

    Felipe mto brigado pelo código realmente bem mais simples q o eu utilizava porem ao executar a macro ela me retorna o seguinte erro :

    Erro em tempo de execução '1004':
    Erro de definição de aplicativo ou de definição de objeto

    e critica a penúltima linha do código:

    pvf.CurrentPageName = ws.Range("A1")
    nunca tinha visto esse tipo de erro caso possa ajudar agradeço.
     
    sábado, 4 de outubro de 2014 14:42
  • Você está colocando algum texto na célula A1 que seja o nome de algum campo de sua tabela dinâmica? Se não, esse erro irá acontecer.

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 7 de outubro de 2014 22:42
    Moderador
  • Sim, o valor que estou colocando corresponde a um dos valores disponíveis no filtro caso eu faça isso manualmente, mais o erro persiste.
    quinta-feira, 9 de outubro de 2014 13:47
  • ActiveSheet.PivotTables("PivotTable1").PivotFields("[Customers]").CurrentPageName = "[Customers].[All Customers].[USA]"
    Note que a expressão [Customers], que é o nome do campo repete. Na célula A1, você está repetindo o nome do campo?
    


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    quinta-feira, 9 de outubro de 2014 21:27
    Moderador