Notifications
Clear all

Instrução Environ

12 Posts
7 Usuários
0 Reactions
2,088 Visualizações
(@tiago_s)
Posts: 0
New Member
Topic starter
 

Galera,

To precisando de uma ajuda com a instrução Environ, gostaria de:
1- Criar uma relação de usuários onde constasse uma relação entre o nome do usuário e o nome do computador logado na rede para cada usuário da lista;
2- É possível colocar uma planilha em rede para vários usuários acessarem ao mesmo tempo?
Desde já obrigado.

 
Postado : 06/04/2017 10:46 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

É possível criar esta lista sim mas vc teria que pedir pra todos abrirem *(individualmente, um de cada vez) seu arquivo com macro, para que a macro capturasse essa informação e escrevesse na planilha e salvasse.

Vc poderia também, gravar esta informação num access, assim é garantido que todos conseguirão gravar estas informações ao abrirem o xlsm...

 
Postado : 06/04/2017 10:59 pm
(@tiago_s)
Posts: 0
New Member
Topic starter
 

Fernando,
Estou fazendo um projeto no excel mais voltado para cálculo/consulta, onde não necessidade de salvar informações.
Como poderia fazer uma relação de usuários que pudesse acessar uma planilha usando a instrução Environ, com nome do usuário e nome do computador em rede, as duas condições, para cada usuário?

 
Postado : 07/04/2017 5:37 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Tiago_S,

Bom dia!

Você deseja que somente usuários autorizados acessem seu arquivo? É isso? Se for isso você pode elaborar uma planilha onde constem, por exemplo, Matrícula, Nome do Computador na rede e Nome do Usuário do Micro e criar um formulário que será carregado na inicialização do arquivo, solicitando o LOGIN e SENHA do usuário. Daí é só fazer uma verificação dos dados entrados nesse formulário com o que estiver registrado na planilha e permitir ou negar o acesso.

 
Postado : 07/04/2017 5:53 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fernando,
Estou fazendo um projeto no excel mais voltado para cálculo/consulta, onde não necessidade de salvar informações.
Como poderia fazer uma relação de usuários que pudesse acessar uma planilha usando a instrução Environ, com nome do usuário e nome do computador em rede, as duas condições, para cada usuário?

Vc não salva informações, beleza, mas vc quer uma lista de usuários que acessam. Essa lista sim deverá ser salva em algum local... certo?
Não tem como vc rodar a macro e identificar todo mundo que PODE rodar seu sistema. Tem como coloocar a macro no sistema e identificar quem está rodando o sistema, salvando este dado em outro local...
Por isso a pergunta de ONDE vc deseja salvar esta informação é importantíssima... Se for salvar num outro XLSX, ou num TXT, tem-se que se preocupar com o status de somente leitura.... por isso um access poderia ser melhor...
vc tb pode gravar um arquivo na rede *(no mesmo endereço do xlsm) com nome de usuario.. .e dentro os dados que vc quiser,,,....

 
Postado : 07/04/2017 6:39 am
 ti02
(@ti02)
Posts: 0
New Member
 

Você só precisa saber previamente qual o nome dos usuarios que vao acessar , assim nao vai ter conflito de acesso entre as planilhas .

para deixar mais de uma pessoa acessar a planilha vai em revisão e compartilhar planilha.

Sub REGISTROACESSO()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Worksheets("REGISTRO").Select
'VERIFICANDO QUAL USUARIO'
If Environ("USERNAME") = "informatica.jca" Then
Range("B2").Value = Environ("Computername")
Range("A2").Value = Environ("USERNAME")
user = Environ("USERNAME")
Range("C2").Value = Now()
ElseIf Environ("USERNAME") = "caio.g" Then
Range("B3").Value = Environ("Computername")
Range("A3").Value = Environ("USERNAME")
user = Environ("USERNAME")
Range("C3").Value = Now()
End If
'MsgBox "Bem vindo(a), " & user

'GRAVANDO REGISTRO NA COLUNA CORRESPONDENTE DE ACORDO COM CADA USUARIO'
'REFERENTE AO USUARIO INFORMATICA.JCA'
If Range("A2").Value = "informatica.jca" Then
Range("E2").Select
Do
If Not IsEmpty(ActiveCell.Offset(0, 0).Value) Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell.Offset(0, 0).Value)
ActiveCell.Offset(0, 0).Value = Range("A2").Value
ActiveCell.Offset(0, 1).Value = Range("B2").Value
ActiveCell.Offset(0, 2).Value = Range("C2").Value

End If

'REFERENTE AO USUARIO CAIO.G'
If Range("A3").Value = "caio.g" Then
Range("H2").Select
Do
If Not IsEmpty(ActiveCell.Offset(0, 0).Value) Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell.Offset(0, 0).Value)
ActiveCell.Offset(0, 0).Value = Range("A3").Value
ActiveCell.Offset(0, 1).Value = Range("B3").Value
ActiveCell.Offset(0, 2).Value = Range("C3").Value

End If
    'LIMPAR DADOS DE USUARIOS DO REGISTRO'
    Range("A2:C100").Select
    Selection.ClearContents
    Range("A1").Select
    
'----------------------------------'

ActiveWorkbook.Save
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
 
Postado : 07/04/2017 8:18 am
(@tiago_s)
Posts: 0
New Member
Topic starter
 

Boa Tarde Galera,

Agradeço a atenção,

Minha ideia a princípio é deixar uma planilha na rede somente consulta, para esse projeto, não vejo necessidade de registro de acesso do usuário, pois a planilha tem finalidade de fazer cálculos e algumas consulta financeiras, mas achei interessante a ideia de registro, que sabe para projetos futuros.
No intuito de "proteger" ou "restringir" o acesso do usuários, gostaria que o usuário que fosse acessar, tivesse como condição o nome do pc e o nome da maquina logada na rede na Lista de acesso.
Tipo: Usuário Fernando - Nome do PC: Fernando e Nome em Rede PC01, Usuário wag - Nome do PC WAG e Nome em Rede PC02, Usuário ti02 - Nome do PC TI02 e Nome em Rede PC03, ...

Conseguir desse jeito, mais faltou o da REDE

Sub Usuario_Acesso()
If VBA.Environ("username") <> "Cadastro" Then
MsgBox "Este App não está autorizado para esse computador!", vbCritical, "USO NÃO AUTORIZADO"
Application.DisplayAlerts = False  
Application.Quit
ActiveWorkbook.Close savechanges:=False          
Application.DisplayAlerts = True              
Else
Exit Sub  
End If
End Sub

Não tenho muito conhecimento em VBA alguém poderia deixar um modelo anexado, para ter uma base.

 
Postado : 07/04/2017 12:28 pm
(@edsonbr)
Posts: 0
New Member
 

Tiago, boa tarde.

Como não trabalho com rede, desculpa se estiver dando alguma bola fora, ok? Mas acredito que o Environ não recupera essa informação que vc está procurando, vc precisaria de uma estratégia mais poderosa.

Acho que se vc esgravatasse um pouco a poderosa API Windows Management Instrumentation (WMI) vc poderia explorar com bastante profundidade o sistema em busca desses parâmetros, através de uma query WQL.

Caso vc não conheça e queira ter uma idéia, dê uma olhadela neste artigo em VBA Brazil Specialist: Exponha os segredos do sistema WMI API com o VBA (Só não se assuste com o tubarão, rsrsrsr).

No próprio artigo tem alguns links interessantes também para aprofundar-se no assunto.

Se quiser usar early binding, faça referência à biblioteca Microsoft WMI Scripting V1.2 Library.

 
Postado : 07/04/2017 1:55 pm
(@tiago_s)
Posts: 0
New Member
Topic starter
 

Boa Noite Galera,

Valeu pela dica Edson tem muitos assuntos interessante no link indicado

Para dificultar "um pouco" o acesso há planilha pensei em usar o Username And USERDOMAIN, já que pelo usuário de Rede está difícil
Alguém poderia dar um ajuste no código? Abraço

 
Postado : 10/04/2017 10:27 pm
(@mprudencio)
Posts: 0
New Member
 

Cara se nao precisa registrar nao complica, nao entendo pq o povo complica.

Cria uma tabela com usuario e senha.

Cria um formulario onde o usuario seja obrigado a digitar o usuario e a senha para abrir o arquivo.

Se o usuario nao estiver na lista ele nao abre o arquivo.

Simples e direto.

 
Postado : 11/04/2017 5:52 am
(@teleguiado)
Posts: 0
New Member
 

Tiago_S veja se é isso.

 
Postado : 11/04/2017 7:33 am
(@tiago_s)
Posts: 0
New Member
Topic starter
 

Boa Tarde Galera,

Marcelo, pensei nessa possibilidade de usuário e senha, porém, NO MEU CASO, não seria o mais indicado, pois é mais "seguro" restringir o acesso a planilha ficando vinculada ao computador do que a combinação de usuário e senha, pois o mesmo código de senha e usuário poderia ser usado por muitos usuários (não autorizados).

Descobrir a instrução Environ e pelo pouco que vi tem muitos recursos interessantes.

Teleguiado, valeu pelo ajuste. Fiz uma pequena... modificação!!! Acho que até o momento vai "dificultar e/ou restringir um pouco" o acesso.

Se Alguém tiver outra ideia... Estou sempre disposto a aprender, Abraços.

 
Postado : 11/04/2017 2:05 pm