Notifications
Clear all

Mensagem (logof) que o arquivo esta sendo usado...

4 Posts
3 Usuários
0 Reactions
970 Visualizações
(@xandrinho)
Posts: 0
Estimable Member
Topic starter
 

Bom Dia!
Amigos, bom dia!!!!
Preciso da ajuda dos mentores. Estou tentando desenvolver um sistema...Porem o arquivo será salvo em rede (Vários usuários estarão usando...). Não sei se é possível, mas gostaria de qdo o arquivo estive sendo usado (Ex. Usuário A) e outro usuário (Ex. Usuário B) tentasse acessar, fosse exibido uma mensagem, Ex: O arquivo esta sendo usado pelo usuário A. Seria possível?
Poderiam por favor, me ajudar?

 
Postado : 24/12/2015 5:17 am
(@mprudencio)
Posts: 2749
Famed Member
 

Isso o excel ja faz se vc abrir um arquivo na rede e outro usuario for abrir o mesmo arquivo ele "impede" a abertura do arquivo informando que o mesmo esta aberto e que vc tem a opção de ser notificado qdo o arquivo for liberado ou abrir somente leitura.

So nao lembro e informa o usuario que esta com o arquivo aberto. Para isso nem precisa compartilhar o arquivo basta colocar na rede e abrir o arquivo em duas maquinas.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 24/12/2015 12:39 pm
carlosrgs
(@carlosrgs)
Posts: 631
Prominent Member
 

Bom dia xandrinho

Eu tive um problema parecido.

Para resolver utilizei um método que não sei se será viável para você.

Eu tenho os Usuários 01, 02, 03, 04 e 05.

Quando algum usuário tenta abrir o arquivo base tem o código abaixo.

'       Abrindo Planilha BASE.
    Workbooks.Open Filename:= _
        "G:FISCALConferencia Livro - SolConferência em AndamentoBase.xlsm"
        
'       Ao abrir o arquivo, o Excel verifica se na célula B2 da Aba Inicio, contém "XXXX".
    Dim EncontraString As String
    Dim Intervalo As Range
        EncontraString = "XXXX"
    If Trim(EncontraString) <> "" Then
    With Sheets("Inicio").Range("B2:B3")
    Set Intervalo = .Find(What:=EncontraString, _
        After:=.Cells(1), _
        LookIn:=xlValues, _
        LookAt:=xlWhole, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlPrevious, _
        MatchCase:=False)
    If Not Intervalo Is Nothing Then
        Application.Goto Intervalo, False

'       Se o Excel localizar "XXXX" informará que a BASE está em uso e finaliza MACRO sem terminas as rotinas.
    MsgBox "ERRO" & vbCrLf & "Não será possível a importação" & vbCrLf & "Base está sendo utilizada por outro usuário!" & vbCrLf & "Tentar novamente mais tarde."
    ActiveWindow.Close
Else

'       Não Localizando "XXXX" conforme citado acima, irá atualizar os dados.
'       No Arquivo BASE, na Aba Inicio será digitado "XXXX" e salva a planilha para que, se outro usuário tentar acessar a BASE o Excel não permita.
    Sheets("Inicio").Select
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "XXXX"
    ActiveWorkbook.Save

'       Macro da BASE.
    Application.Run "Base.xlsm!M01_XMLNFE"
End

E ao fechar o arquivo base com Workbook_BeforeClose eu deleto o XXXX.

Aqui funcionou, mas cada usuário tem a sua planilha onde eles importam/exportam os dados do arquivo base.

E eu não sei quase nada de VBA, tudo que utilizo são códigos que acho na rede e adapto a minha necessidade, e esse acima está atendendo :D

MPrudencio embora o windows informe que o arquivo está sendo utilizado, no meu caso, eu abro o arquivo base e executo algumas macros, mesmo abrindo somente como leitura as macros serão executadas mas as alterações não serão salvas por ser arquivo somente para leitura.

_______________________________________________________________________________________________
Carlos Santos
* Marque o tópico como Resolvido se foi solucionado seu problema.

 
Postado : 28/12/2015 5:17 am
(@xandrinho)
Posts: 0
Estimable Member
Topic starter
 

O Carlos Mto Obrigado vou tentar a adaptação. Valeu msm

 
Postado : 29/12/2015 10:06 am