Notifications
Clear all

Planilha vinculada com arquivo DBF

14 Posts
3 Usuários
0 Reactions
2,342 Visualizações
(@davds)
Posts: 9
Active Member
Topic starter
 

Boa tarde

Vinculei um arquivo DBF de um sistema em DOS que temos aqui com uma planilha do excel. Fiz o vinculo dos dados, formatei a planilha com as cores que queria, enfim ta show de bola. Só tem um pequeno detalhe que esta embaçando eu que colocar a planilha em produção.

Configurei a planilha para a mesma ficar se atualizando de meia em meia hora, pois o DBF esta ativo, porem, tenho que deixar essa planilha com algumas celulas bloqueadas pois nao quero que o usuario apague as formulas e nem os dados vinculados, porem, quando protejo a planilha indo em ferramentas/proteger e etc, a mesma não consegue se atualizar automaticamente. Resumindo, se eu proteger a planilha ela não se atualiza automaticamente.

O que devo fazer ? utilizo o excel 2003

 
Postado : 20/11/2013 12:22 pm
(@rmaia)
Posts: 13
Active Member
 

Na pressa para arrumar uma solução eu optaria por uma dessas soluções paliativas:

- Replicar a planilha:
A primeira planilha buscaria os dados da fonte de dados e a segunda buscaria os dados da primeira. Esta segunda você poderia bloquear e a primeira poderia ser ocultada.

- VBA (Evento Worksheet_SelectionChange)
Caso o usuario selecione uma celula que não possa ser alterada, ele redireciona para outra célula. Utilizei SELECT CASE apenas para representar.

Ex:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$C$8"
Range("A1").Select
Case "$F$9"
End Select
End Sub

- VBA (Evento Worksheet_SelectionChange + Evento Worksheet_Change)
Quando o usuário selecionar a célula, o conteúdo será armazenado em uma variável publica. Caso ele tente alterar o conteúdo da celula, o evento CHANGE seria ativado e retornaria o valor original armazenado anteriormente.

Ex:
Public conteudo, retornarvalor

Private Sub Worksheet_Change(ByVal Target As Range)

If retornarvalor = True Then
retornarvalor = False
If Target.Address = "$F$7" Then: Target = conteudo
End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

retornarvalor = True
conteudo = Target.Formula

End Sub

 
Postado : 20/11/2013 1:25 pm
(@davds)
Posts: 9
Active Member
Topic starter
 

Ola Rogerio

Realmente eu tinha feito o que voce sugeriu, de uma planilha buscar da outra, mas não estava funcionando da forma que deveria ser. É como se a segunda planilha, que busca os dados da primeira, nao atualizasse os valores corretamente, ela não fica colocando os registro abaixo de registro, tenho até um topico aberto sobre esse probema mais ninguem me respondeu ainda. Já o VBA não sei mexer muito.

Não sei onde eu errei nas formulas de buscar os dados de planilha para planilha, revisei tudo e não vi erro nenhum. O estranho é que se eu digitar os valores na primeira planilha, a segunda planilha busca os dados normalmente, mais se a primeira realizar a atualização de dados automaticamente, esses valores não vão corretamente para a segunda planilha, até vão, mais fica sempre sobrepondo o ultimo registro entendeu.

Onde eu errei ?

 
Postado : 20/11/2013 1:50 pm
(@rmaia)
Posts: 13
Active Member
 

Davds,

pelo que entendi a sua planilha utilizada como "base de dados" em Excel cresce exponencialmente inserindo linha após linha. Está correto ?

Veja se pode postar um exemplo, facilitaria a discussão.

Abs.

 
Postado : 22/11/2013 11:05 pm
(@davds)
Posts: 9
Active Member
Topic starter
 

Ola

Desculpe a demora na resposta pois estava viajando

Vamos la

A minha ideia inicial era trazer os dados vinculados para a plan2 e depois jogar esses mesmos dados para a plan1, colocando aquela formula simples de importar dados para outra planilha tipo plan1!A2 e etc. O problema é que não sei porque cargas dagua os dados nao ficam sequenciados na plan1. Na plan2, na coluna C, os dados vem em sequencia, 12732,12733,12734 e por ai em diante. Se o ultimo registro na plan2 for por exemplo 12734, quando a planilha for atualizada, os demais dados irão aparecer sequenciados tipo 12735, 12736,12737 e etc. Se eu coloquei as formulas na plan1 para trazer os dados da plan2, eles deveriam tambem ficar sequenciados, mais nao ficam. Ao invés dele sequenciar na plan1 ele faz é sobrepor o ultimo registro como por exemplo: o ultimo registro na plan1 é 12734 na linha 968, o proximo registro deveria ser o 12735 na linha 969, porem, ele joga o registro 12735 na linha 968 e apaga o registro 12734.

Espero que tenha entendido agora amigo, gentileza preciso muito resolver issso, aguardo...

 
Postado : 26/11/2013 9:05 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como disse o colega RMaia, com um exemplo de sua palmilha (plan1 e Plan2) ficará mais fácil obter uma ajuda.
Se a "importação" dos dados do dbf para a plan2 ocorre normalmente, sem a sobreposição de dados; não há razão para acontecer o relatado com a plan1.Porem é preciso atentar se os dados oriundos do DBF não se alteram, mudando assim o ultimo registro (acrescentando ou diminuindo)

 
Postado : 26/11/2013 9:34 am
(@davds)
Posts: 9
Active Member
Topic starter
 

Ola amigos Rmaia e Reinaldo

Segue o link com o arquivo exemplo, lembrando que nesse caso, nao ha exclusao de registros e sim sempre adição

http://www.dropbox.com/s/ja4sis8uct1obw ... ntrole.xls

 
Postado : 26/11/2013 10:27 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Estive verificando seu modelo, e não encontrei nada que possa causar o relatado. A unica diferença e que a planilha atualizada pelo DBF começa os dados na linha 10 e a planilha espelho começa os dados na linha 9, então sempre no total as duas terão uma diferença de uma linha porem os dados serão os mesmos.
Também existem 2 rotinas vinculadas a dbf,
uma chamada produto que atualiza na abertura do arquivo e depois a cada 6a minutos.
outra vinculada a manutenção que atualiza a cada minuto, recebendo valores modificados apos 1/5/2013
Somente deverá ocorrer o relatado, caso os dados oriundos do DBF forem alterados.

 
Postado : 26/11/2013 11:45 am
(@davds)
Posts: 9
Active Member
Topic starter
 

Boa tarde Reinaldo

Voce disse que esta tudo ok, mais o problema infelizmente existe, é estranho realmente, pensei até em atualziar o office pois utilizo o 2003.

A unica diferença que vi, é que se eu digitar manualmente os dados na plan2, eles vão automaticamente em ordem para a plan1, mais se os dados forem oriundos da atualização da planilha, acontece o problema que relatei acima.

Partindo desse ponto então amigo Reinaldo, o que eu posso fazer ? Pensei em usar a plan2 mesmo, mais para isso eu teria que arrumar uma forma de bloquear as celular que são de formulas e que são oriundas do DBF, mais esse bloqueio não deve atrapalhar a atualização dos dados da mesma.

O que eu faço ?

 
Postado : 26/11/2013 12:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Um problema que pode acontecer é: a atualização efetuada pela query não gera um input de update na planilha.
Ao atualizar experimente teclar "F9" (comando que "força" o calculo (update) da planilha).

 
Postado : 26/11/2013 4:47 pm
(@davds)
Posts: 9
Active Member
Topic starter
 

Boa noite amigo

Então o problema dos dados nao ficarem sequenciados na plan1 é desse tal de input, o F9 resolve então ? eu teclo f9 na plan1 ou na plan2 ? antes da atualizacao automatica ou depois ?

 
Postado : 26/11/2013 6:54 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu creio que esse possa ser o problema (ou pelo menos o maior), experimente na Planilha 1 depois da atualização, se resolver, talvez de para automatizar.

 
Postado : 27/11/2013 5:09 am
(@davds)
Posts: 9
Active Member
Topic starter
 

Boa noite amigo, continua com o mesmo problema

 
Postado : 30/11/2013 7:44 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

olá, Davs caso se trate do mesmo assunto, por favor indicar a postagem cruzada!!! :( :(
http://profwillianexcel.forumeiros.com/ ... -vinculado

Att

 
Postado : 01/12/2013 5:05 pm