Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Atualização planilha Dados para geração de tabela dinâmica

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Enael
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Abr 23, 2015 2:29 pm

Atualização planilha Dados para geração de tabela dinâmica

Mensagem por Enael »

Olá pessoal!
Trabalho em uma software house e estou com problemas no Excel com algumas tabelas dinâmicas.
Por algum motivo, de forma aleatória, quando exportamos informações do banco de dados para uma planilha de Dados no Excel para posterior geração de uma tabela dinâmica, as informações da planilha Dados são apagadas.

Espero ter conseguido explicar o problema de forma clara.

Alguém já passou por esse tipo de situação e poderia me ajudar?

A atualização da planilha Dados e da tabela dinâmica são feitas via macro, porém não consegui identificar o que está ocorrendo.

Anexo a planilha.

Se precisarem de mais informações, por favor, entrem em contato.

Grato desde já.

Enael
Anexos
VEND117.zip
(43.95 KiB) Baixado 224 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
skuma
Colaborador
Colaborador
Mensagens: 25
Registrado em: Qui Mai 02, 2013 2:03 pm

Re: Atualização planilha Dados para geração de tabela dinâmi

Mensagem por skuma »

Se você fizer essa consulta que está na conexão no seu Banco de Dados trás resultados?

Se sim:

Já tentou mudar as propriedades da conexão com o BD da sheet Dados para Sobrescreva as células existentes com novos dados, limpa as não utilizadas ou Insira linhas inteiras para novos dados, limpe as células não utilizadas?


Enael
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Abr 23, 2015 2:29 pm

Re: Atualização planilha Dados para geração de tabela dinâmi

Mensagem por Enael »

Olá skuma!
Primeiramente muito obrigado pelo retorno.

A consulta na conexão retorna resultado.
Pelo que vi em um primeiro momento os dados estão na planilha Dados, pois a tabela dinâmica montada em cima da Dados tem informação.
Acredito que por algum motivo, após montar a tabela dinâmica o Excel esteja executando novamente a consulta no Banco de Dados. Como a tabela que está sendo consultada é uma tabela temporária (assim que o Excel recebe as informações da tabela os dados são eliminados, acaba limpando a Dados). Não consegui identificar se realmente o Excel está executando a consulta.
Uma informação que esqueci de mencionar: ao fazer a exportação para o Excel, abro o programa no meu sistema, informo os filtros e exporto para o Excel, quando a exportação para o Excel é concluída, verifico que as informações na planilha Dados foram apagadas, fechando o Excel e repetindo o processo diversas vezes, em um determinado momento as informações permanecem na planilha Dados.


Avatar do usuário
skuma
Colaborador
Colaborador
Mensagens: 25
Registrado em: Qui Mai 02, 2013 2:03 pm

Re: Atualização planilha Dados para geração de tabela dinâmi

Mensagem por skuma »

Enael,
Vi que você criou uma macro para atualizar sua tabela na planilha Dados, esse problema de sumir as informações acontece só quando você atualiza a tabela através dessa macro ou se você fazer a atualização manualmente pelo excel também ocorre esse problema?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Enael
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Abr 23, 2015 2:29 pm

Re: Atualização planilha Dados para geração de tabela dinâmi

Mensagem por Enael »

Gabriel, só ocorre quando atualiza através da Macro. Para ficar mais fácil nos entendermos, a planilha foi feita para funcionar na seguinte forma(nessa ordem):

1º: No meu sistema, executo o comando para exportar as informações do Banco pro Excel.
2º: A planilha é aberta, executa a consulta no Banco, trazendo as informações para a planilha Dados.
3º: Após a planilha Dados ter sido alimentada, a tabela dinâmica é atualizada.

Por algum motivo, após o passo 3, é como se a planilha executasse a consulta novamente. Nesse momento as informações do relatório não estão mais na tabela temporária, pois a geração já teria sido concluída com sucesso.

Não consegui estabelecer uma lógica para que isso ocorra.

Enael


Avatar do usuário
skuma
Colaborador
Colaborador
Mensagens: 25
Registrado em: Qui Mai 02, 2013 2:03 pm

Re: Atualização planilha Dados para geração de tabela dinâmi

Mensagem por skuma »

Enael, para que serve a célula A1 na sheet Filtros?

Porque estou perguntando isso, pois deletei todo o seu código em todas as sheets e módulos, porém mesmo assim após eu digitar alguma coisa nessa célula dessa planilha ele tenta atualizar o banco de dados. Não consegui achar sentido nisso, já que exclui os códigos e não achei nenhuma conexão relacionada a essa célula, talvez pode ser algo relacionado a isso. (qualquer coisa faça o mesmo ai pra ver se acontece a mesma coisa)

Outro ponto, você tentou debugar o código para ver em que momento ele está limpando sua sheet Dados? eu tentei fazer aqui, mais como não tenho o banco de dados não consigo.


Enael
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Abr 23, 2015 2:29 pm

Re: Atualização planilha Dados para geração de tabela dinâmi

Mensagem por Enael »

Gabriel, esse campo da célula A1 na Filtros serve para fazer a consulta no Banco. A rotina toda de atualização é disparada quando ele é alterado. Essa parte está na Plan1 (Filtros), "Private Sub Worksheet_Change(ByVal Target As Range)"

Não tentei debugar o código pois não sei como fazer(se você puder me instruir nessa parte, agradeço). O que fiz fui comentando partes das macros, salvando o relatório e gerando novamente para ver se em algum momento ficaria as informações na guia Dados. Em algumas situações manteve, em outras não.

Enael


Avatar do usuário
skuma
Colaborador
Colaborador
Mensagens: 25
Registrado em: Qui Mai 02, 2013 2:03 pm

Re: Atualização planilha Dados para geração de tabela dinâmi

Mensagem por skuma »

Enael, vamos lá.

Para você debugar o código é só você marcar qualquer parte do código (de preferência a parte onde inicia o processo) e ir clicando F8, assim ele vai passando linha a linha do seu código e você consegue acompanhar o passo a passo e talvez enchergar onde ele está limpando sua tabela.

O que eu acho que está acontecendo é o seguinte:

1) Quando você altera a célula A1 na sheets Filtros, ele acessa Private Sub Worksheet_Change(ByVal Target As Range).
2) Dentro dessa Sub, você chama a função atualizaDados que atualiza a conexão com o banco de dados da sheet Dados (aqui sua temporária é limpa se entendi bem).
3) Ainda dentro dessa Sub, você atualiza sua tabela dinâmica na sheet Relatorio e oculta a sheet Filtros.
4) Feito todo esse processo, como sua conexão possui um vinculo com a célula A1 da sheets Filtros o seu banco de dados é acessado novamente através da conexão existente para atualizar as informações da sheet Dados.

Acredito eu que nesse item 4, pelo o que entendi o temporário do seu banco de dados já está limpo e por isso sua sheet Dados fica em branco.

Obs.: Para você ver que seu banco de dados atualizada novamente, acesse a guia Dados > Conexões > Selecione a Conexão > Propriedades > Definição > Parâmetros, veja que aqui está marcado Atualizar automaticamente quando o valor da célula for alterado.

O que entendi aqui é que você está atualizando duas vezes a mesma tabela, só que no primeiro momento você tem informação e no outro sua temporária está em vazia.

Sugestão para solução (talvez funcione, não é certeza):

1) Retira do seu código a função atualizaDados;
2) Ou desmarque o item da observação acima - Atualizar automaticamente quando o valor da célula for alterado;

Veja se com isso conseguimos evoluir.
Abraços,


Enael
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Abr 23, 2015 2:29 pm

Re: Atualização planilha Dados para geração de tabela dinâmi

Mensagem por Enael »

Boa tarde!

Gabriel, não consegui mais dedicar tempo para verificar esse assunto.

Assim que possível retomarei a questão.

Muito obrigado pela disposição na tentativa de solucionar o problema.

Att.
Enael


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder