Atualização automát...
 
Notifications
Clear all

Atualização automática de vínculo

8 Posts
3 Usuários
0 Reactions
1,727 Visualizações
(@ramzero)
Posts: 0
New Member
Topic starter
 

Boa tarde pessoal

Tendo 2 planilhas abertas, gostaria de copiar e colar os dados de uma na outra (vínculo), porém os dados da planilha "fonte" não estão todos lá, eles vão sendo preenchidos

Tem algum jeito de já deixar "pré colado" uma range maior, selecionando também as células que ainda estão em branco, para que depois, quando vier a ter novos dados preenchidos na planilha fonte, automaticamente já apareça também na planilha "final"?

No anexo já deixei copiado e colado uma range maior, além das células que contém dados, mas mesmo assim, se inserir novos dados na planilha fonte, nada acontece na final (notem que selecionei de A1:G20)

Gostaria se possível não fosse usado tempo para verificar atualizações da planilha fonte. Exemplo: a cada 1 minuto verifique se tem dados novos

Pode ser usado VBA se for preciso

Obrigado

 
Postado : 08/06/2018 10:37 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

RAMZERO<

Boa noite!

Se entendi corretamente, o que você quer é perfeitamente possível apenas com a vinculação entre os dois arquivos. Abri seus dois arquivos (Pasta1.xlsx e Pasta2.xlsx), na aba Plan1 do arquivo Pasta2.xlsx, na célula B10 (destacada em amarelo) inseri a fórmula =[Pasta1.xlsx]Plan1!$B$7 para que ela fique vinculada com a célula B7 da aba Plan1 do arquivo Pasta1.xlsx e na célula C12 (também destacada em amarelo) da aba Plan1 do arquivo Pasta2.xlsx, inseri a fórmula =SE([Pasta1.xlsx]Plan1!$C$11<>"";[Pasta1.xlsx]Plan1!$C$11;"") para que ela fique vinculada a célula C11, da aba Plan1 do arquivo Pasta1.xlsx. Note que a célula C11 do arquivo Pasta1.xlsx está vazia e, para que não fique aparecendo um 0 (zero) na célula C12 do arquivo Pasta2.xlsx, eu coloquei na fórmula também um SE.

Pois bem, sempre que se digita qualquer coisa Pasta1.xlsx, em B7 ou C11, automaticamente esses valores aparecem em B10 e C12 do arquivo Pasta2.xlsx, independente das células do arquivo Pasta1.xlsx terem ou não valores.

Veja se é assim.

 
Postado : 08/06/2018 3:23 pm
(@ramzero)
Posts: 0
New Member
Topic starter
 

Fala wagner, bom dia!

Sim é isso, você captou o que eu precisava

Porém há uma diferença, quando eu abro os dois arquivos, para quando abro um deles (Pasta1), depois abro outra instância do Excel e por ela vou em arquivo abrir e busco o outro (Pasta2)

Quando faço da segunda forma aparece na fórmula o caminho do arquivo no disco e mesmo inserindo o dado novo na Pasta1 a Pasta2 não atualiza

Quando eu abro os dois arquivos juntos funciona perfeitamente e fórmula aparece assim: =SE([Pasta1.xlsx]Plan1!$C$11<>"";[Pasta1.xlsx]Plan1!$C$11;"")

Quando abro um deles, depois abro outra instância do Excel e por ela vou em arquivo abrir, a planilha não funciona e a fórmula aparece assim =SE('C:UsersuserDesktop[Pasta1.xlsx]Plan1'!$C$11<>"";'C:UsersuserDesktop[Pasta1.xlsx]Plan1'!$C$11;"")

Sabe porquê e como fazer funcionar no segundo caso?

Obrigado

 
Postado : 12/06/2018 5:26 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

RAMZERO,

Bom dia!

Infelizmente, não sei.

 
Postado : 12/06/2018 5:44 am
(@ramzero)
Posts: 0
New Member
Topic starter
 

Mesmo assim obrigado wagner, foi de grande ajuda

Alguém tem uma ideia de como faço funcionar?

Obrigado

 
Postado : 12/06/2018 5:58 pm
(@ramzero)
Posts: 0
New Member
Topic starter
 

Up!

 
Postado : 14/06/2018 4:41 pm
(@edsonbr)
Posts: 0
New Member
 

RAMZERO, boa noite

Quando vc abre o outro arquivo em outra instância, as pastas de trabalho não compartilham a porção de memória correspondente, portanto não se atualizam (no Stack Overflow há uma discussão a esse respeito).

Para contornar isso, logo após alterar os dados na Pasta1 (a dos dados) vc precisaria salvá-la primeiro para então ir na Pasta2 (a das fórmulas) e na Guia Dados>Grupo Conexões>Editar Links>Atualizar Valores.

Mas qual o motivo de ter de abrir em duas instâncias separadas?

 
Postado : 15/06/2018 9:22 pm
(@ramzero)
Posts: 0
New Member
Topic starter
 

Fala EdsonBR, boa tarde, tudo bem?

Mas qual o motivo de ter de abrir em duas instâncias separadas?

Porque preciso deixar uma parte do código rodando com "total atenção", pois recebo dados externos, que são perdidos se não trata-los o mais rápido possível e enquanto meu código inteiro roda, acredite, às vezes acontece de que enquanto o código está rodando, chegam novos dados e quando o código termina e fica pronto pra rodar novamente, aqueles dados que chegaram enquanto o código estava rodando se perde!

Levantei essa bola em outro tópico e me disseram que isso se chama threading, e que no VBA Excel, não é possível fazê-lo

Se eu abro junto (compartilhando a porção de memória correspondente) é como se eu deixasse todo o código em uma única pasta de trabalho e não resolve meu problema

Já me disseram pra melhorar o código, já fiz isso inserindo: Application.ScreenUpdating = False, ajudou muito do que estava, mas ainda assim não foi o suficiente

Então em pesquisas e testes aqui, notei que se eu abrir em duas instâncias de Excel, eu meio que "forço" o sistema fazer o tal threading, pois sendo nativo o multithreading no sistema operacional, acreditei que poderia dar certo, e resolveu e muito o problema, só que surgiu esse agora, de precisar fazer a vinculação do dado recebido em um arquivo (o qual sé está com a parte do código que precisa ficar "atento" prioritariamente) do outro que não precisa ser assim tão "ágil"

Aparentemente encontrei uma forma aqui mas estou testando ainda, mas se tiver uma solução te agradeço

logo após alterar os dados na Pasta1 (a dos dados) vc precisaria salvá-la primeiro

Tem como fazer sem precisar ficar salvando?

Outra pergunta, tem como deixar automático esse processo de atualizar valores? (Guia Dados>Grupo Conexões>Editar Links>Atualizar Valores)
De preferência não usando divisões de tempo Ex: Atualizar a cada 10 segundos

Obrigado

 
Postado : 16/06/2018 1:01 pm