Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#63763
Boa Tarde Pessoal

Estou precisando de uma ajuda para criar uma macro que atualize um relatório utilizando até a última linha preenchida com dados de uma aba dentro da própria planilha.
Abaixo divido pelas etapas e status:

1° Ir na aba BD até a última linha da tabela para criar uma variável [OK]
2° Atualizar a tabela dinâmica que esta na aba Detalhe utilizando a variável criada [Problema].

Macro:

Sub Atualizar_Fonte_de_Dados_TD()
Sheets("BD").Select
linha_fim = Range("A1").End(xlDown).Row
Sheets("Detalhe").Activate
ActiveSheet.PivotTables("Tabela dinâmica2").SourceData = ("BD!$A$1:$O" & linha_fim)
End Sub

Ao executar a linha ActiveSheet.PivotTables("Tabela dinâmica2").SourceData da o seguinte erro:

"Erro de tempo de execução '1004':

O nome do campo da tabela dinâmica não é válido. Para criar um relatório de tabela dinâmica, você deve usar dados organizados como uma lista com colunas rotulados. Se você estiver mudando o nome do campo de uma tabela dinâmica, deve digitar um novo nome para o campo."

Já tentei mudar algumas coisas dessa linha, como ThisWorkbook.Worksheets ao invés de ActiveSheet, SourceData com, Range, mas nada deu certo.

Tentei anexar a planilha mas ela é um pouco grande.
Salvei no Gdrive: https://drive.google.com/file/d/1E6OehT ... sp=sharing

Caso alguém já tenha criado alguma macro alterando a fonte de dados e poderia mandar o código utilizado.

Att.
Paulo Portugal
#63764
boa tarde Paulo, vou dar uma olhada no seu link, mas pela mensagem de erro, na sua linha 1, entre a coluna A e a coluna O, deve ter alguma coluna sem nome, e para criar tabela dinâmica todas as colunas precisam ter um título.
phportugal agradeceu por isso
#63765
O cabeçalho esta preenchido.
Essa base de dados já é utilizada pela tabela dinâmica, só que agora estou automatizando os processos.
Quando atualizo manualmente funciona, só que estou com dificuldades no código que envolve o SourceData.

Muito obrigado pela força.
#63766
oi Paulo, outra opção que vc poderia testar seria colocar na origem de dados as colunas inteiras sem as linhas, assim vc não precisa de macro

BD!$A:$O

ainda, se vc formatar a sua tabelad e dados deveria ser automatico tambem

e por ultimo, vc pode atualizar o source data usando a notacao relativa

ActiveSheet.PivotTables("Tabela dinâmica2").SourceData = "BD!L1C1:L" & linha_fim & "C15"
phportugal agradeceu por isso
#63777
fico contente que tenha dado certo.

Não dou aulas :-(, mas tenho um canal no youtube cursodeexcelgratis.com.br/canal, estou fazendo uns videos de VBA, recomendo vc fazer o primeiro, nele ensino técnicas que vão te ajudar a aprender a programar e a encontrar os problemas das suas macros.

Neste seu caso, eu nunca tinha feito a atualização de tabela dinâmica ( para ser sincero, não sei quase nada de VBA de memoria, sempre vou atrás do que preciso ) , neste caso, bastou eu ver na janela de inspeções do VBA o formato daquele DataSource, para entender o que estava errado, antes tentei o gravador de macros não gravava nada , kkkk

obrigado, e espero que assine meu canal ! tem varias coisas legais que vou fazer em VBA ( mesmo não sabendo, rs )

Na figura 1 é a aparência quando abro[…]

Cara, nem sei como agradecer. Showww, resolveu per[…]

repetição entre jogos

Poderia dar alguns exemplo de resultado esperado s[…]

Mudar o mês na fórmula

Anexa um exemplo, por favor.

Não seria só desabilitar a opç[…]

Ajuda Para Calculo com horario.

Bom dia/tarde/noite Pessoal preciso de uma ajuda[…]

Agradeço muito pela dica, mas acredito que […]

Retornar nome do computador na rede

achei a mesma pergunta neste forum , com resposta,[…]