Notifications
Clear all

VBA: Atualizar planilha Dinamica de acordo com uma lista

7 Posts
2 Usuários
0 Reactions
4,836 Visualizações
(@difaborges)
Posts: 9
Active Member
Topic starter
 

Prezados, boa tarde.
Tenho uma planilha do excel e preciso atualizar varias planilhas dinamicas de acordo com um dado selecionado em uma lista. Criei a macro abaixo, mas aparece um erro "1004 - Não é possivel obter a propriedade PivotTables da classe Worksheet."

Segue a macro. Obrigado pela informação.

//Lista
If Plan12.Cells(9, 4) = "Tudo" Or Plan12.Cells(9, 4) = Plan9.Cells(i, 7) Then
//Planilha Dinamica a ser aualizada de acordo com o valor selecionado na lista acima
ActiveSheet.PivotTables("Total de Demandas Carteira").PivotFields( _
"SUPERINT_SOLICIT").ClearAllFilters
ActiveSheet.PivotTables("Total de Demandas Carteira").PivotFields( _
"SUPERINT_SOLICIT").CurrentPage = "(Tudo)"
End If 

O valor de tudo tem que ser atualizado junto com o if.
Eu nao sei se esta é a melhor forma, ou se posso usar um for para isso.

Obrigado.

 
Postado : 15/01/2013 10:10 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

1004 erro em tempo de execução (Que ocorre quando o código está sendo executado. Ocorre um erro em tempo de execução quando uma instrução tenta uma operação inválida)

Portanto é meio que "generico" ,com causa especifica desconhecida.
Sómente pelas 3 linhas de codigo fica um tanto quanto dificil entender onde há o erro
Achometro:
Pode ser pelo codigo estar "parado" em outra planilha que não a que contem o Pivot.
Experimente
altere de activesheet para sheets("nomedasheetcomopivot").pivot ou selecione a planilha antes da linha do activesheet

 
Postado : 15/01/2013 10:26 am
(@difaborges)
Posts: 9
Active Member
Topic starter
 

Reinaldo, obrigado pela explicação, mas preciso entender melhor.

Realmente as linhas abaixo foram geradas gravando uma macro. Esta macro eu gravei selecionando um filtro de uma tabela dinamica. Este filtro da planilha dinamica tem os mesmos dados dados do if, onde é feito um filtro de acordo com a categoria selecionada em uma lista.

A variavel tudo(nao sei se realmente e uma variavel) precisa ser alterada de acordo com a alteracao da lista que fica selecionada atraves do if.

ActiveSheet.PivotTables("Total de Demandas Carteira").PivotFields( _
"SUPERINT_SOLICIT").ClearAllFilters
ActiveSheet.PivotTables("Total de Demandas Carteira").PivotFields( _
"SUPERINT_SOLICIT").CurrentPage = "(Tudo)"

Não tenho muita experiencia em VBA e estou começando agora.
Agradeço muito seu auxilio.

Obrigado

 
Postado : 15/01/2013 10:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Quando gravou a macro, voce estava como o pivot em destaque (selecionado e/ou posicionado na planilha onde o mesmo está.Então é posivel que ao executa-la esteja em outro local.
Melhor seria e disponibiliza-se o seu modelo (os dados/valores podem se ficticios; para que possamos analisar como mai propriedade.
Quanto ao "tudo" não me parece uma variavel, quando gravou o sistema incliu assim?

 
Postado : 15/01/2013 10:56 am
(@difaborges)
Posts: 9
Active Member
Topic starter
 

Pessoal, boa tarde.

Consegui resolver metade do meu problema, mas ainda preciso de ajuda. Seguinte, com o codigo abaixo consigo atualizar todas as tabelas dinamicas de acordo com o filtro selecionado. Porem, ainda nao consegui fazer com ele atualize sozinho e outro dado importante; a macro só atualiza se eu estiver com a aba que consta as tabelas dinamicas em destaque. Alguem pode me ajudar a atualizar sem que a aba esteja em destaque. Agradeço muito a ajuda de todos. Segue o codigo que criei.

If Plan12.Cells(9, 4) = "Todas" Then
    ActiveSheet.PivotTables("Tabela dinâmica15").PivotFields("SUPERINT_SOLICIT"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tabela dinâmica15").PivotFields("SUPERINT_SOLICIT"). _
        CurrentPage = "(Tudo)"
    ActiveSheet.PivotTables("Tabela dinâmica14").PivotFields("SUPERINT_SOLICIT"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tabela dinâmica14").PivotFields("SUPERINT_SOLICIT"). _
        CurrentPage = "(Tudo)"
        ActiveSheet.PivotTables("Tabela dinâmica13").PivotFields("SUPERINT_SOLICIT"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tabela dinâmica13").PivotFields("SUPERINT_SOLICIT"). _
        CurrentPage = "(Tudo)"
    ActiveSheet.PivotTables("Tabela dinâmica12").PivotFields("SUPERINT_SOLICIT"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tabela dinâmica12").PivotFields("SUPERINT_SOLICIT"). _
        CurrentPage = "(Tudo)"
    ActiveSheet.PivotTables("Tabela dinâmica11").PivotFields("SUPERINT_SOLICIT"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tabela dinâmica11").PivotFields("SUPERINT_SOLICIT"). _
        CurrentPage = "(Tudo)"
    ActiveWindow.SmallScroll ToRight:=6
    ActiveSheet.PivotTables("Tabela dinâmica10").PivotFields("SUPERINT_SOLICIT"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tabela dinâmica10").PivotFields("SUPERINT_SOLICIT"). _
        CurrentPage = "(Tudo)"
    ActiveWindow.SmallScroll ToRight:=3
    ActiveSheet.PivotTables("Tabela dinâmica9").PivotFields("SUPERINT_SOLICIT"). _
        ClearAllFilters
    ActiveSheet.PivotTables("Tabela dinâmica9").PivotFields("SUPERINT_SOLICIT"). _
        CurrentPage = "(Tudo)"
End If
End Sub
 
Postado : 18/01/2013 9:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

a macro só atualiza se eu estiver com a aba que consta as tabelas dinamicas em destaque

Experiomente colocar a seguinte linha Sheets("TAB. DINAMICA GRAFICO ENTREGUE").Activate logo após o If..Then

If Plan12.Cells(9, 4) = "Todas" Then
Sheets("TAB. DINAMICA GRAFICO ENTREGUE").Activate
ActiveSheet.PivotTables("Tabela dinâmica15").PivotFields("SUPERINT_SOLICIT"). _
ClearAllFilters....
 
Postado : 18/01/2013 11:40 am
(@difaborges)
Posts: 9
Active Member
Topic starter
 

Obrigado pela Informação Reinaldo, ficou muito bom.

Problema resolvido

 
Postado : 25/01/2013 10:34 am