Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Como Identificar o usuário que está com a planilha aberta na rede?[RESOLVIDO]

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
luizleite
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Out 16, 2018 2:10 pm

Como Identificar o usuário que está com a planilha aberta na rede?[RESOLVIDO]

Mensagem por luizleite »

Quando tentamos abrir uma planilha na rede que já está sendo utilizada por outro usuário, o excel abre como SOMENTE LEITURA e informa quem é o usuário que está com a planilha aberta.

Como identificar essa pessoa através de uma macro, assim como o excel identifica?

No caso, quando utilizo o Environ("UserName") o excel mostra o Usuário da máquina, que no meu caso é a minha matrícula aqui na empresa:

Username = "f0001234"

Porém, a mensagem de SOMENTE LEITURA excel mostra o nome completo "está bloqueado para edição po LUIZ AUGUSTO DE ARAUJO....."

Portanto, o nome que o excel usa na mensagem de SOMENTE LEITURA não é o "userName"
Editado pela última vez por luizleite em Seg Jan 13, 2020 8:57 am, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Como Identificar o usuário que está com a planilha aberta na rede?

Mensagem por webmaster »

luizleite,

Achei esse código no fórum do ozgrid. Não testei, mas parece que faz o trabalho:

Código: Selecionar todos

Private Sub Workbook_Open()
If ActiveWorkbook.ReadOnly Then
Dim Folder As String
Dim FName As String


Folder = "c:\files\"
RowCount = 1
FName = Dir(Folder & "filename.xlsm")
 MsgBox "The file is locked by " & GetFileOwner(Folder, FName) & "."
Else
 ActiveWorkbook.Save
End If
End Sub




Function GetFileOwner(fileDir As String, fileName As String) As String


'On Error Resume Next
Dim secUtil As Object
Dim secDesc As Object
Set secUtil = CreateObject("ADsSecurityUtility")
Set secDesc = secUtil.GetSecurityDescriptor(fileDir & fileName, 1, 1)
GetFileOwner = secDesc.owner
End Function
Fonte: https://www.ozgrid.com/forum/index.php? ... file-open/


luizleite
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Out 16, 2018 2:10 pm

Re: Como Identificar o usuário que está com a planilha aberta na rede?

Mensagem por luizleite »

Olá,
Obrigado pela resposta.
Esse código não funcionou para mim, pois ele pega o usuário logado, que no caso, é a minha matrícula aqui na empresa, e o nome que eu quero, é o que está registrado na licensa do office, que aqui na empresa é o nome completo do colaborador.

Mas consegui resolver o problema de uma forma simples, vou informar abaixo e mudar o statos desse tópico para resolvido:

Obs: Ainda não tenho as manhas de inserir o código na minha resposta e deixar legal visualmente....

O nome do usuário registrado no Office é conseguido através do Application.UserName

Portanto, no arquivo que preciso abrir e verificar qual usuário está utilizando, deixei uma macro gravada no evento Workbooks.Open que registra o Application.Username em Uma célula.

Então, quando eu abro esse arquivo com a minha macro, se o mesmo for somente leitura ("If ActiveWorkbook.ReadOnly Then"), eu aviso com uma msgbox o nome que ficou gravado na célula.

Resumindo... O Application.Username pega o nome de quem está registrado no office, ao qual o excel atribui nas mensagens de SOMENTE LEITURA.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder