Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

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 )
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord