Notifications
Clear all

Senha na planilha em rede

11 Posts
3 Usuários
0 Reactions
2,353 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde a todos!
Mais uma vez aqui precisando de ajuda!

Preciso de um código para registrar os usuários que acessaram uma planilha em rede.
Tipo:
Planilha salva em Z: (servidor)
Usuarios acessam a planilha pela rede. Quando acessar ficar registrado o usuario em uma das planilhas que está no servidor.
Já vi exemplos do que estou precisando, mais pela rede não esta dando certo.
Alguém poderia me ajudar?

Desde já agradeço.

Att,

 
Postado : 13/06/2013 1:55 pm
 SOS
(@sos)
Posts: 8
Active Member
 

Marciel,

Da uma olhada neste site ver se ajuda!

http://www.macoratti.net/12/12/vba_lgn1.htm

 
Postado : 13/06/2013 2:00 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia SOS,
Visitei o site e vi o procedimento de criar telas de login e senha.
O que na verdade eu preciso é uma planilha contendo os registros de quem acessou tal planilha. Lembrando que essa planilha esta em rede. Todos os usuarios que acessar a planilha possa ser registrado em outra.

 
Postado : 14/06/2013 4:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Eu uso este código em uma planilha que fica na pasta Z da nossa rede, mas este salvamento é feito dentro da propria planilha. com matricula , dta/hora e maquina que acessou ; espero que ajude.

Option Private Module
'Option Explicit
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, _
                                                nSize As Long) As Long

Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
                                                        (ByVal lpBuffer As String, _
                                                        nSize As Long) As Long
Sub Get_Computer_Name()
Dim a1 As String

   a1 = Now
   
  
    Dim Comp_Name_B As String * 255
    Dim Comp_Name As String
    GetComputerName Comp_Name_B, Len(Comp_Name_B)
    
    Comp_Name = Left(Comp_Name_B, InStr(Comp_Name_B, Chr(0)))
        
    Dim lpBuff As String * 25
    Dim ret As Long, UserName As String
    ret = GetUserName(lpBuff, 25)
    UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
    
    Sheets("Numero de Acessos").Activate
Desprot
  
 Plan7.Range("A65000").End(xlUp).Offset(1, 0).Value = a1
 Plan7.Range("A65000").End(xlUp).Offset(0, 1).Value = UCase(UserName)
 Plan7.Range("A65000").End(xlUp).Offset(0, 2).Value = Comp_Name

 

End Sub
 
Postado : 14/06/2013 5:13 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Claudinei, boa tarde!

Esse código atende sim, porém o problema é que para os usuários a planilha é somente leitura. O registro de acesso ocorre somente quando a pessoa, após abrir a planilha, salvar a mesma. A planilha é apenas para o usuário visualizar os dados contidos nela.
Mesmo assim agradeço a sua atenção e disposição.

Att,

 
Postado : 14/06/2013 10:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Eu uso em minhas planilhas uma adaptação do código passado acima junto com um outro onde consigo ter o log de acesso pela máquina e pelo usuário que precisa digitar uma senha em um form para ter acesso a planilha.
O que faço quando a planilha é apenas para visualização é proteger ela toda com senha e no código passado acima eu coloco antes um código que desbloqueia a planilha, salva após o log ter sido atualizado e protege novamente.
Fazendo isso nenhum usuário vai poder editar a planilha e ela vai continuar salvando os dados de acesso nela.
Caso tenha dificuldades em fazer algo assim me dá um toque que posto aqui um exemplo de como faço isso.

 
Postado : 10/08/2013 8:05 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!
Abusando da sua boa vontade gostaria sim de ver um exemplo de como faz nesse caso. Ainda não consegui resolver o meu problema.
Desde já agradeço!
Abraços!

 
Postado : 13/08/2013 5:52 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde.
Estou lhe enviando anexo um modelo que criei de um cadastro de empregados.
Nele é possível cadastrar todos os dados em uma aba que quando salvos, vão para uma outra aba onde fica o banco de dados da planilha.
Existem algumas abas de cadastros adicionais.
Peguei um código do André Bernardes onde era possível colocar as fotos das pessoas nos registros, achei muito interessante, usava antes um outro onde era salvo na planilha o caminho da foto e ela era mostrada em um form.
A planilha só funciona se as macros forem ativadas, em caso contrário é mostrada uma aba informando que é necessário ativar as macros para a planilha funcionar.
Na aba "config" pode-se cadastrar os usuários e senhas de acesso, elas serão salvas sempre que alguém acessar a planilha.
Como ela também vai ser usada em rede, o caminho das fotos está mapeada para o Z: na subpasta fotos, elas devem ser salvas como o nome sendo o número de registro, em todas as máquinas eu configurei assim e o nome do computador que usou a planilha também vai ser salvo na hora do login.
O usuário é "admin" e a senha padrão: "admin".
Algumas abas vão ficar ocultas de forma automática e a planilha será bloqueada automaticamente também, no início do código ESTAPASTA_DE_TRABALHO você pode configurar a senha padrão das abas, fica em [Const senha as string = ""], entre as aspas coloque a senha que voce quer.
As planilhas vão se desbloquear, salvar os registros e se bloquearem novamente.
Quero esclarecer que 99,9% dos códigos da planilha eu peguei em fóruns, o que fiz foi apenas juntar todos eles para criarem essa estrutura.
Uso esse padrão em minhas planilhas, as impressões também estão formatadas, eu retirei apenas a logomarca da empresa que ficaria no cabeçalho no lado esquerdo, fora isso está tudo igual.
Acho que me empolguei a escrever e já estou até repetindo algumas coisas mas, deixa pra lá..., rss :D
Qualquer dúvida pode me chamar que ajudo no que puder.

 
Postado : 13/08/2013 12:09 pm
(@adolfolima)
Posts: 27
Eminent Member
 

Olá Marciel Silva.

Observe que como vc usa a planilha em rede, ocorrerá que, em algum momento, quando alguém estiver usando a planilha, mais alguém vai querer também usar, aí ocorre um problema: O excel abre uma cópia da planilha como somente leitura onde vc pode até salvar, mas com outro nome, ou seja, adeus integridade dos dados.

A minha sugestão é que vc use uma integração do Excel com o Access, Esta integração vai te permitir usar a interface do Excel porém com todos os dados em tabelas de um banco.MDB, inclusive os acessos; Funcionaria assim: Quando alguém abrisse a planilha ela pegaria imediatamente todos os dados no banco e registrava o nome de quem acessou a planilha (Isto é feito instantaneamente por SQL) e o banco já é fechado imediatamente; se mais alguém abrir a planilha em outro computador ela também pegará os dados no banco e também registrará lá o nome do usuário. Assim, mesmo que haja várias planilhas abertas os dados serão sempre os mesmos. Uso uma estrutura assim com planilhas em cinco computadores alimentando um banco Access e nunca tive qualquer problema.

Existe uma seção neste fórum tratando exclusivamente deste assunto: ( viewforum.php?f=25 ) Leia e decida :?: :!: :?: . Se surgir dúvidas tenho certeza que a turma vai ajudar.

 
Postado : 13/08/2013 12:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Adolfo boa noite.
Aproveitando para tirar uma dúvida com você se possível:
Penso em criar uma estrutura como voce colocou, o banco de dados sendo em Access, sendo acessado pelo Excel.
Para isso eu preciso ter o Access em todos os computadores ou apenas no servidor?
Existe algum problema em usar versões diferentes do Office para acessar o banco de dados? Por exemplo o servidor ser o Office 2010 e nas outras máquinas 2003 ou vice-versa?
Essas são algumas dúvidas que eu tenho, penso em passar o meu BD todo para Access e apenas ser acessado e editado pelo Excel onde acho mais fácil também em fazer contas e para criar interfaces, tanto em forms como em planilhas.
Um grande abraço.

 
Postado : 13/08/2013 6:47 pm
(@adolfolima)
Posts: 27
Eminent Member
 

Adolfo boa noite.
Aproveitando para tirar uma dúvida com você se possível:
Penso em criar uma estrutura como voce colocou, o banco de dados sendo em Access, sendo acessado pelo Excel.
Para isso eu preciso ter o Access em todos os computadores ou apenas no servidor?

Em nenhum computador. o Excel se comunica numa boa com o arquivo .mdb do Access. Só recomendo o uso na máquina que vc vai criar o programa para que possa criar as tabelas do BD no Access, o que é estremamente simples.

Existe algum problema em usar versões diferentes do Office para acessar o banco de dados?
Por exemplo o servidor ser o Office 2010 e nas outras máquinas 2003 ou vice-versa?

Dependendo do método de comunicação usado pode ocorrer, mas também existe meios pra contornar estes problemas.

Essas são algumas dúvidas que eu tenho, penso em passar o meu BD todo para Access e apenas ser acessado e editado pelo Excel onde acho mais fácil também em fazer contas e para criar interfaces, tanto em forms como em planilhas.
Um grande abraço.

Também não suporto a interface do Access por esta razão fiz a integração Excel/Access.

Oi souexcel.

Em relação a Excel, a melhor coisa que fiz nos últimos tempos foi usar o banco de dados no Access. Ganhei integridade dos dados e velocidade pois as consultas em SQL são muito rápidas e encontramos um vasto material sobre isto na internet. As sintaxes de consultas em SQL são basicamente quatro:
Insert - usado para inserir um novo registro no BD.
UpDate - Usada para alterar um registro no BD a partir de um critério.
Delete - Usada para deletar um registro
e
Select - Usada para colher informações do BD a partir de um critério simples ou composto.

No link que indiquei tem um modelo do colega Wagner Morel (viewtopic.php?f=25&t=8913#p46922) que apesar de eu não ter visto, acredito que servirá de base para um projeto maior. No mais... no que pudermos ajudar é só por as dúvidas aqui no fórum que agente ajuda no que for possível.

 
Postado : 13/08/2013 7:55 pm