Impedir modificaçõe...
 
Notifications
Clear all

Impedir modificações (Somente Leitura)

5 Posts
2 Usuários
0 Reactions
855 Visualizações
(@carlosrgs)
Posts: 0
New Member
Topic starter
 

Bom dia pessoal.

Dei uma breve pesquisada e não consegui resposta.

Preciso de algum código que verifica se o arquivo está aberto por outro usuário, se sim ele me avisa e não faz nada, se não eu faço o que quiser no arquivo aberto.

Atualmente eu adaptei um código que achei na rede, e é bem amador porque não manjo muito.

Tenho um arquivo Base, e os arquivos dos usuários (user1, user2, user3 e por ai vai), quando preciso atualizar a base o usuário na sua planilha executa uma macro, que esta macro abre a base e verifica se há um campo preenchido numa determinada célula, se estiver preenchido é porque o arquivo está em uso, se não está liberado para atualização.

Segue o código abaixo.

'       MACRO PARA ATUALIZAR PLANILHA BASE.
'           Atualiza XML de NOTA FISCAL.

'       Segundo Plano
    Application.EnableCancelKey = xlDisabled
    Dim planAtiva As Worksheet
    Application.ScreenUpdating = False
    Set planAtiva = ActiveSheet
    
'       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"
' COLOCO MINHA ROTINA AQUI

Existe uma maneira mais simples de fazer a verificação se o arquivo está disponível ?

Obrigado!

 
Postado : 04/05/2016 7:32 am
(@mprudencio)
Posts: 0
New Member
 

A questao é a seguinte os usuarios apenas fazem atualizações na base, tudo que utilizam é nos arquivos locais?

Ou utilizam a base em algum procedimento?

 
Postado : 04/05/2016 3:17 pm
(@carlosrgs)
Posts: 0
New Member
Topic starter
 

Fazem atualizações.

É uma planilha para conferir notas fiscais lançadas no sistema.

O Dep. de TI desenvolveu um relatório onde importamos todos os XML (Notas Fiscais) emitidos no nosso CNPJ, ai gero um relatório do sistema que são dessas Notas Lançadas.

E o excel ajuda a conferir se foi lançado corretamente.

Para atualizar os relatórios o usuário utiliza a planilha dele, que com uma macro abre o arquivo base e realiza a atualização.

 
Postado : 05/05/2016 5:07 am
(@mprudencio)
Posts: 0
New Member
 

Disponibilize os arquivos

Base e Usuario

O arquivo base é apenas para consolidar os dados ou ele permenece aberto por muito tempo?

 
Postado : 05/05/2016 7:57 am
(@carlosrgs)
Posts: 0
New Member
Topic starter
 

Bom dia.

Registrado para futuras consultas a resolução do Tópico.

Não pude disponibilizar os arquivos, mas tratei disso por MP com MPrudencio.

https://support.microsoft.com/pt-br/hel ... ready-open

Obrigado!

 
Postado : 12/04/2017 5:44 am