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:

  1.  
  2. Private Sub Workbook_Open()
  3.     Call Check_Partilha
  4. End Sub
  5.  

 

Num modulo:

  1.  
  2. Sub Check_Partilha()
  3.  Dim arrayUtilizadores, arrayEstado
  4.  Dim strUtilizadores As String
  5.  Dim nUtilizadores As Integer, i As Integer
  6.  
  7.  ‘caso não esteja a ser partilhado
  8.  If ThisWorkbook.MultiUserEditing = False Then Exit Sub
  9.  
  10. ‘array de apoio
  11.  arrayEstado = Array("", "Exclusivo", "Partilhado")
  12. ‘array com informação sobre os utilizadores a usar o livro
  13.  arrayUtilizadores = ThisWorkbook.UserStatus
  14. ‘inicializar a string
  15.  strUtilizadores = vbNullString
  16. ‘numero de utilizadores a usar o livro
  17.  nUtilizadores = UBound(arrayUtilizadores, 1)
  18. ‘mais do que um utilizador activo
  19.  If nUtilizadores > 1 Then
  20.     For i = 1 To nUtilizadores
  21.       ‘construção de uma string com os utilizadores activos
  22.        strUtilizadores = strUtilizadores & vbCrLf & _
  23.                         Format(i, "00") & " – " & _
  24.                         arrayUtilizadores(i, 1) & " – " & _
  25.                         arrayUtilizadores(i, 2) & " – " & _
  26.                         arrayEstado(arrayUtilizadores(i, 3))
  27.     Next
  28.     ‘mostrar informação
  29.     MsgBox strUtilizadores, vbInformation, "Utilizadores a usar este Livro"
  30.   End If
  31. End Sub
  32.  
Gostou? Partilhe, não custa nada 🙂Share on FacebookShare on Google+Tweet about this on TwitterShare on TumblrShare on LinkedInEmail this to someone

Deixe uma resposta