Notifications
Clear all

Importar ao fechar ou salvar

8 Posts
3 Usuários
0 Reactions
1,302 Visualizações
(@freirenet)
Posts: 9
Active Member
Topic starter
 

Olá, boa tarde! Antes de tudo gostaria de agradecer antecipadamente, pois sempre que precisei o pessoal do site foi bem rápido e preciso nas respostas!

Vamos lá: Eu possuo 34 planilhas (idênticas) que 34 pessoas preenchem.

Possuo uma planilha que importa os dados destas 34 planilhas e consolida as informações.

Problema: se as pessoas não fecham as planilhas, não consigo importar sem que haja mensagens de erro do tipo "planilha aberta exclusivamente pelo usuário A" ou até mesmo "não foi possível localizar a planilha Y".

Para isso, pensei em uma solução: ao invés de importar, as 34 pessoas "exportariam" os dados para uma planilha intermediária (que a planilha agregadora importaria os dados posteriormente).

Minha dúvida: Há como automatizar a rotina de exportar os dados automaticamente? Seja a cada "x" tempo ou quando salvar ou quando fechar a planilha?

Qual seria a rotina disso?

Em tempo: Há como evitar o erro descrito inicialmente na importação dos dados?

Obrigado!

 
Postado : 04/02/2014 12:56 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

freirenet, o ideal seria vc disponibilizar um modelo da planilha que vc utiliza (já com o código de importação), e um modelo de planilha que é importada.

Lembre que os dois arquivos devem estar compactados.

 
Postado : 04/02/2014 1:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde galera,

Freirenet, da uma olhada na instrução "On error"

Depende da necessidade, você pode usar o "On Error Resume Next" ou um "On Error GoTo Erro*", poderia também fazer a rotina para dar um loop entre as planilhas para verificar se tem alguma em aberto e caso tenha abrir um aviso, senão já corre com o código, mas como o GT disse, precisamos de alguns exemplos para uma melhor análise.

Qualquer coisa da o grito.
Abraço

 
Postado : 04/02/2014 1:32 pm
(@freirenet)
Posts: 9
Active Member
Topic starter
 

freirenet, o ideal seria vc disponibilizar um modelo da planilha que vc utiliza (já com o código de importação), e um modelo de planilha que é importada.

Lembre que os dois arquivos devem estar compactados.

Boa tarde!

Então: Creio que nem seja necessário enviar a planilha... (compreendo perfeitamente que muitas vezes sem o exemplo em mãos fica difícil a resposta) mas creio não se tratar desse caso. Digo isso pois só há uma instrução SQL Select simples, tipo "copie da planilha A e cole na planilha B". O problema não é com o código e sim com o fato de algumas vezes o usuário estar com a planilha aberta e por isso dá a mensagem de erro de "arquivo em uso". Algumas vezes dá o mesmo erro mesmo não estando em uso. Por isso disse acima não se tratar de fórmulas ou erro em módulos.

A questão é: há como importar sem que a planilha esteja fechada?

__________________________________________________________________________________

Vou reformular a pergunta, mantendo parte do escopo inicial:

Imaginemos duas instâncias: a dos usuários e a do gerente, cada um com sua planilha. Atualmente existe a função importar dados da planilha dos usuários para a planilha do gerente (desde que as planilhas dos usuários estejam fechadas).

Para isso, basta criar uma conexão do Microsoft Query, selecionar os campos das planilhas dos usuários desejadas e colar este vínculo na planilha do gerente. Isso eu já tenho.

O que eu quero é saber se há uma forma semelhante, nos mesmos moldes de importar dados via Microsoft Query, só que ao invés de o gerente importar dos usuários os usuários que irão exportar, mas para uma planilha intermediária. No momento oportuno, o gerente importaria estes dados da planilha intermediária para a sua consolidada.

Hoje: Usuários lançam dados > gerente importa dados

Objetivo: Usuários lançam dados > Exportam para uma planilha intermediária > Gerente importa dados desta planilha intermediária

Fazendo desta forma, evita-se ter que importar dados de 34 usuários, correndo o risco de um deles estar com a planilha aberta ou com problemas.

Há alguma função de exportar?

Obrigado!

 
Postado : 05/02/2014 11:26 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Nesse caso, faça um backup da planilha, usando o comando SaveCopyAs e importe da cópia.

 
Postado : 05/02/2014 11:41 am
(@freirenet)
Posts: 9
Active Member
Topic starter
 

Nesse caso, faça um backup da planilha, usando o comando SaveCopyAs e importe da cópia.

Obrigado pelo retorno, mas creio que não poderei usar desta forma, pelo seguinte:

Os usuários são extremamente leigos e ao se criar uma macro com esta função (Salvar Como) ou mesmo pedir para o usuário fazer isso (Arquivo > Salvar Como), é capaz de ele dar continuidade aos trabalhos na nova planilha criada e não na que ele estava trabalhando originalmente.

Precisava de alguma função que o usuário apertasse um botão e os dados seriam automaticamente exportados para uma determinada planilha :|

 
Postado : 05/02/2014 12:05 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

é só vc definir um novo local para o backup, diferente do local onde eles acessam a planilha.

 
Postado : 05/02/2014 12:08 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Por experiencia, utilizar planilhas Excel e manter uma "Base de dados" atualizada sempre gera grandes inconvenientes. Creio que cada usuário em um equipamento, cada equipamento com um endereço de rede, equipamento pode estar desligado, planilha aberta etc...
Apesar de ter refugado a proposta do colega Gilmar; creio eu ser a melhor saida.
Criando em cada uma planilha dos usuários, no modulo Esta pasta de trabalho uma rotina (no fechamento da planilha por exemplo), não alteraria nada na rotina do usuário, e o excel/vba se encarrega de salvar uma copia do arquivo em um diretório pre-estabelecido

Proposta (altere o diretório e nome do arquivo para suas necessidades)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.SaveCopyAs "C:TEMPXXXX.XLS"
End Sub
 
Postado : 05/02/2014 12:23 pm