Saber quem está a utilizar um Workbook partilhado

Este post faz parte de uma série de pedidos de ajuda que ao longo dos anos me foram chegando. (3/2007)

Dúvida: “Como posso verificar se um Workbook instalado num servidor encontra-se a ser utilizado/aberto por outro utilizador? A função MultiUserEditing não me detecta se o workbook já está aberto ou não!

Solução: Macro detecta se o Workbook está a ser partilhado e quantos utilizadores estão a trabalhar nele, informando o nome destes e a respectiva data e hora. A macro só avisa caso esteja mais do que 1 utilizador a editar o workbook.
Pode ser executada no inicio ou quando se desejar saber essa informação. A apresentação dessa informação é feita de um modo muito simples através de uma msgbox.

Excel Partilhado

Para que a macro seja executada logo no carregamento, coloca-se em ThisWorkbook:

Private Sub Workbook_Open()
    Call Check_Partilha
End Sub

 

Num modulo:

Sub Check_Partilha()
 Dim arrayUtilizadores, arrayEstado
 Dim strUtilizadores As String
 Dim nUtilizadores As Integer, i As Integer
 
 'caso não esteja a ser partilhado
 If ThisWorkbook.MultiUserEditing = False Then Exit Sub
  
'array de apoio
 arrayEstado = Array("", "Exclusivo", "Partilhado")
'array com informação sobre os utilizadores a usar o livro
 arrayUtilizadores = ThisWorkbook.UserStatus
'inicializar a string
 strUtilizadores = vbNullString
'numero de utilizadores a usar o livro
 nUtilizadores = UBound(arrayUtilizadores, 1)
'mais do que um utilizador activo
 If nUtilizadores > 1 Then
    For i = 1 To nUtilizadores
      'construção de uma string com os utilizadores activos
       strUtilizadores = strUtilizadores & vbCrLf & _
                        Format(i, "00") & " - " & _
                        arrayUtilizadores(i, 1) & " - " & _
                        arrayUtilizadores(i, 2) & " - " & _
                        arrayEstado(arrayUtilizadores(i, 3))
    Next
    'mostrar informação
    MsgBox strUtilizadores, vbInformation, "Utilizadores a usar este Livro"
  End If
End Sub

Deixe um comentário