ATENÇÃO NOVOS USUÁRIOS

Se registrou recentemente? Seu cadastro será avaliado e mendiante aprovação, a conta será ativada e você poderá usufruir do fórum. O tempo de avaliação gira em torno de 24 a 48 horas.

Esqueceu sua senha?

Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

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 » Sex Jan 10, 2020 7:21 am

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: 2816
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 » Sáb Jan 11, 2020 3:36 pm

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/


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

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 » Seg Jan 13, 2020 8:53 am

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