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.

Para que a macro seja executada logo no carregamento, coloca-se em ThisWorkbook:
Private Sub Workbook_Open()
Call Check_Partilha
End Sub
e a macro 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