Notifications
Clear all

Atualizar a base de dados de uma tabela dinâmica

4 Posts
1 Usuários
0 Reactions
1,542 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caros, boa tarde!

Tenho essa rotina para atualizar a base de dados de uma determinada tabela dinâmica:

Sheets("Plan1").PivotTables("Tabela Dinâmica 1").SourceData = "BASE!C1:C48"

Acontece que agora preciso atualizar um caminho fora da planilha, e essa base está na rede.

Tentei mais ou menos isso:

Sub ATUALIZAR_BASES()

DefEndereco = "'\redelocal[ArquivoBase.xlsm]BASE'!A1:AV1000"

    Sheets("Escoa").PivotTables("Escoa").SourceData = DefEndereco

End Sub

Ou BASE!C1:C48
Mas dá erro.

Uma luz?

 
Postado : 10/11/2011 1:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!

Ampliato,

Pelo que entendi, você tem uma planilha com os dados que se encontra na rede e outra planilha com a tabela dinâmica. Caso seja isso, para atualizar os dados você deve usar a seguinte logica.

Abrir a planilha que tem os dados > atualizar a tabela dinâmica > fechar a planilha que contem os dados.

Segue o código para ser feito isso.

Sub Atualizar()
    
    Workbooks.Open ("Coloque aqui o caminho da redeArquivoBase.xlsm")
    Windows("Coloque aqui o nome da planilha que contem a tabela dinâmica").Activate
    ActiveSheet.PivotTables("Tabela dinâmica1").PivotCache.Refresh
    Windows("ArquivoBase.xlsm").Activate
    ThisWorkbook.Saved = True
    ThisWorkbook.Close
    MsgBox "Tabela atualizada com sucesso", vbInformation

End Sub

Como não estou em rede não consegui testar para ver o resultado, testa e depois comenta que ajustamos se tiver erro.

Abraço. :mrgreen:

 
Postado : 15/11/2011 11:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

... Pelo que entendi, você tem uma planilha com os dados que se encontra na rede e outra planilha com a tabela dinâmica...

Olá Walter, boa noite!

Antes de mais nada, obrigado pela tentativa, mas não é isso que preciso. Na verdade eu já tenho uma rotina que faz isso que postou.

Deixe tentar ser mais claro.

Eu tenho várias tabelas dinâmicas separadas em planilhas. Cada uma dessas tabelas, é montada através de uma base em um arquivo que está em algum lugar.

Exemplo: Tenho uma base de dados em:

\redelocalArquivoBase.xlsx

Tenho um arquivo com uma tabela dinâmica em:

D:Arquivo.xlsm

Esse arquivo "D:Arquivo.xlsm" tem uma tabela dinâmica, que puxa os dados da base "\redelocalArquivoBase.xlsx", mas precisamente na planilha "BASE!A1:AV1000", ou seja:

"'\redelocal[ArquivoBase.xlsx]BASE'!A1:AV1000"

Agora, suponhamos que a minha base mude ou de endereço, ou o arquivo seja renomeado ou a planilha seja renomeada (enfim, qualquer coisa que faça com a base de dados para alimentar a tabela dinâmica não seja mais "\redelocalArquivoBase.xlsx".

Como eu monto uma rotina em VBA para que atualize o enderço da base, de forma dinâmica através de parâmetros pré-definidos? :?

Ai vc volta ao meu primeiro post, e entenderá melhor como seria essa rotina. ;)

Abraços!

 
Postado : 17/11/2011 7:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Ampliato, eu não manjo muito sobre TD e não utilizo Rede para testar a rotina abaixo, mas veja se seria isto :

Sub ATUALIZAR_BASES()

    Dim sPath As String
    
    Dim ARQUIVO_DADOS As String
    
    Const nomePlanilhaBase As String = "BASE"
    
    sPath = "\redelocal"
    
    ARQUIVO_DADOS = "ArquivoBase.xlsx"
    
    Set Rng1 = Worksheets(nomePlanilhaBase).Range("A1:AV1000")
    
    DefEndereco = sPath & "[" & ARQUIVO_DADOS & "]" & nomePlanilhaBase & "'" & "!" & Rng1.Address(False, False)
    
    MsgBox DefEndereco

End Sub

Se não for, eu tentei.

[]s

 
Postado : 17/11/2011 9:53 pm