Notifications
Clear all

Verificar se arquivo está em aberto

4 Posts
3 Usuários
0 Reactions
2,334 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!
Tenho a macro abaixo que verificar se o arquivo está em aberto e funciona corretamente.
Minha dúvida é se a macro funciona se o arquivo a verificar está na rede e foi aberto em outro computador.

Sub AbrirArqPrestações()
    Dim strPath As Variant
    Dim NomeArquivo As Variant
    Dim Posição As Variant
    strPath = "C:UsersPaulo.SemblanoDesktopTeste Conexão.xlsm"
    Posição = InStrRev(strPath, "", , vbTextCompare)
    NomeArquivo = Mid(strPath, Posição + 1, Len(strPath) - Posição)
    If Dir(strPath) = vbNullString Then
        strCheck = False
    Else
        strCheck = True
    End If
    If strCheck Then
        If IsFileOpen("C:UsersPaulo.SemblanoDesktopTeste Conexão.xlsm") Then
            MsgBox "O arquivo se encontra em aberto!"
            Workbooks(NomeArquivo).Activate
        Else
            Workbooks.Open (strPath)
            Worksheets("Planilha4").Activate
        End If
    Else
        'Mensagem = MsgBox("O arquivo " & strPath & " não foi encontrado!", vbInformation)
        Mensagem = MsgBox("O arquivo " & NomeArquivo & " não foi encontrado!", vbInformation)
    End If
End Sub

Function IsFileOpen(filename As String)
    'Verificar se o arquivo está em aberto
    Dim FileNum As Integer, errnum As Integer
    On Error Resume Next
    FileNum = FreeFile()
    Open filename For Input Lock Read As #FileNum
    Close FileNum
    errnum = Err
    On Error GoTo 0
    Select Case errnum
        Case 0
            IsFileOpen = False
        Case 70
            IsFileOpen = True
        Case Else
            Error errnum
    End Select
End Function
 
Postado : 13/04/2018 6:33 am
(@klarc28)
Posts: 0
New Member
 

Só colocando em prática para saber.

 
Postado : 13/04/2018 8:37 am
(@edsonbr)
Posts: 0
New Member
 

Boa tarde, Prof. Paulo,

...Minha dúvida é se a macro funciona se o arquivo a verificar está na rede e foi aberto em outro computador...

Sim, esse código (que já é bem antigo) foi concebido pelo Suporte da Microsoft para identificar exatamente essa situação, tal como foi dito no artigo original (Código de macro para verificar se um arquivo já está aberto) --Tradução de máquina--:

Sumário
Quando você usar um arquivo compartilhado em uma rede, você pode frequentemente achará útil saber se outro usuário abriu o arquivo. O de Visual Basic for Applications do Microsoft seguinte procedimento é um exemplo de um método para determinar se outro usuário abriu um arquivo específico.

Inclusive testei aqui e funcionou corretamente...

 
Postado : 13/04/2018 11:36 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Valeu Edson!
Nem sabia de onde tinha tirado este código.
E nem tinha como testar em rede.
Rsrsrsrsrsrsrs
Um abração!

 
Postado : 13/04/2018 3:05 pm