Página 1 de 1

Como funciona o Update de uma tabela

Enviado: 17 Mai 2018 às 12:46
por JCabral
Boa tarde

Tenho uma duvida sobre como funciona o Update de uma tabela que vai buscar valores externos através do Microsoft Query, então é assim:

- Existe algures um ficheiro de dados ao qual eu vou buscar para a minha planilha só os dados que me interessam, via Microsoft Query;
- Tenho a atualização de dados ao abrir a minha planilha ligada;

Depois dos dados atualizados preciso de fazer várias operações sobre os dados que importei, mas só depois dos dados estarem atualizados e aqui surge a minha duvida, que é, se eu colocar em Sub Workbook_Open as instruções sobre as operações que eu quero efetuar sobre os dados da minha tabela, essas instruções são executadas antes ou depois dos dados estarem atualizados?

Se forem executadas antes dos meus dados serem atualizados como posso fazer para as instruções só serem realizadas depois dos dados estarem atualizados e de forma automática ou seja sem eu carregar em nenhum botão?

Espero ter sido claro na minha duvida.

Obrigado
Jorge Cabral

Re: Como funciona o Update de uma tabela

Enviado: 17 Mai 2018 às 16:10
por babdallas
Tente usar no evento Open do Workbook
Código: Selecionar todos
ThisWorkbook.RefreshAll

Como funciona o Update de uma tabela

Enviado: 18 Mai 2018 às 10:26
por JCabral
Babdallas

Mas a minha duvida mantem-se, ou seja, as instruções que estão no evento Open do Workbook são executadas antes ou depois das tabelas serem atualizadas com os dados externos?

Obrigado

Re: Como funciona o Update de uma tabela

Enviado: 18 Mai 2018 às 12:02
por babdallas
Dentro do evento Open da planilha, você inicia o código atualizando as querys e depois executa seu código. Teoricamente isso deve resolver. Depois vou realizar alguns testes para tentar te dizer se isso é realmente necessário ou não.
Código: Selecionar todos
ThisWorkbook.RefreshAll
'Coloque o restante do código

Como funciona o Update de uma tabela

Enviado: 18 Mai 2018 às 12:19
por JCabral
Eu percebi a sua solução, ou seja em vez da atualização das querys ser feita automaticamente, eu faço isso com código, ThisWorkbook.RefreshAll , e depois coloco o meu código para fazer as operações nas tabelas atualizadas.

Depois me retorne suas conclusões sobre se posso manter essa atualização automática ou se tenho que fazer com código.

Obrigado

Re: Como funciona o Update de uma tabela

Enviado: 23 Mai 2018 às 11:53
por JCabral
Babdallas

Chegaste a fazer os testes? Alguma conclusão?

Obrigado
Jorge Cabral

Re: Como funciona o Update de uma tabela

Enviado: 30 Mai 2018 às 09:51
por babdallas
Acabei de testar.

O evento Open roda primeiro do que a atualização da Query. Puxei dados via PowerQuery de uma tabela de uma outra pasta de trabalho do Excel, adicionei ao modelo de dados e solicitei que a conexão fosse atualizada ao abrir o arquivo. Coloquei no evento Open do Workbook para mostrar uma mensagem com o primeiro valor dos dados que havia puxado pelo PowerQuery. Depois fechei o arquivo.
Abri a pasta de trabalho com os dados de origem, modifiquei o primeiro dado, salvei e fechei.
Abri novamente a pasta de trabalho com a consulta e o código no evento Open. Ao abrir, mostrou o valor antigo (ativado no evento Open) e só depois disso a Query foi atualizada com o valor novo.
Se realizei o teste de forma correta, concluo que o evento Open é verificado antes de qualquer atualização de Query.

Como funciona o Update de uma tabela

Enviado: 30 Mai 2018 às 10:07
por JCabral
Obrigado Babdallas

Donde podemos concluir que o melhor é desactivar a atualização automática das tabelas e faze-lo através da instrução que indicaste mais acima e só depois fazer cálculos e operações sobre os dados, certo?

Ou existe maneira de sabermos quando é que os dados já estão atualizados e depois fazermos as operações que precisamos? O que seria o ideal.

Re: Como funciona o Update de uma tabela

Enviado: 30 Mai 2018 às 10:54
por babdallas
Caso tenha código no evento Open do Workbook, então eu faria primeiro a atualização das Querys via evento Open para depois executar meu código.
Caso o código não esteja no evento Open, aí você pode colocar a atualização automática das Querys ao abrir o arquivo.

Não sei se há uma maneira se saber se uma query foi atualizada ou não. Teria que pesquisar.