Notifications
Clear all

Impedir planilha de ser aberta ou copiada para outro PC

16 Posts
4 Usuários
0 Reactions
3,332 Visualizações
(@marmen)
Posts: 32
Eminent Member
Topic starter
 

Bom dia galera do Planilhando,

Estou com dificuldades para encontrar um cód que impeça uma planilha de ser aberta em outro computador. Encontrei vários tópicos que falava sobre esse assunto como o cód da duvida do Pedro:

    Private Sub Workbook_Open()

    ' Deve ser igual ao que esta registrado no PC
    ' Pois Diferencia Maiuscula e Minuscula.

    If Environ("ComputerName") = "NOME DO SEU COMPUTADOR" Then

    MsgBox "Seja Bem Vindo"

    Else

    ActiveWorkbook.Save
    'Fecha a planilha
    ActiveWorkbook.Close
    'Fecha o Excel
    Application.Quit

    End If


    End Sub

Esse não deu certo, quando eu salvava a planilha e tentava abrir novamente no mesmo PC ela fechava automaticamente.

Acredito que tenha como colocar um cód que utiliza o IP do computador. Fuçando na Internet achei esse cód que da certo se os computadores estiverem em rede, mais a partir do momento que a planilha fosse copiada para um pen drive e colada em outro PC a mesma era aberta normalmente.

Private Sub Workbook_Open()
If Left(ThisWorkbook.FullName, 1) <> "C" Then
 MsgBox "Não encontrado a unidade C "
 ThisWorkbook.Close
End If
End Sub

Será que alguém consegue me ajudar? Desde já agradeço.

Att' Marcio Mendes

 
Postado : 10/03/2017 7:26 am
hronconi
(@hronconi)
Posts: 314
Reputable Member
 

Existe um produto chamado SenhaCrypt que permite fazer o que você pretende.

Entre na página http://henriqueronconi.wixsite.com/cons ... video_tips e assista o vídeo que fala sobre.

Henrique
http://henriqueronconi.wix.com/consultoria

Espero ter ajudado! ;)

 
Postado : 10/03/2017 7:43 am
(@marmen)
Posts: 32
Eminent Member
Topic starter
 

Obrigado pela dica hronconi, mais preciso de um cód em VBA.

Att' Marcio Mendes

 
Postado : 10/03/2017 3:17 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Obrigado pela dica hronconi, mais preciso de um cód em VBA.

Em excel nao existe nada 100 % seguro.

A segurança esta mais relacionada ao conhecimento do usuario do que em qualquer outra coisa.

Um membro do forum disse uma vez:

"Segurança em excel é igual a trancar a porta e colocar a chave embaixo do tapete."

Para algumas pessoas ainda colocar um aviso na porta "CHAVE EMBAIXO DO TAPETE".

Em resumo de nada adianta.

Basta desabilitar macros e a segurança nao existe mais.

A senha do VBA é tao simples de remover que nem compensa colocar. Hoje em dia basta um google que ja era.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 10/03/2017 4:59 pm
(@marmen)
Posts: 32
Eminent Member
Topic starter
 

Obrigado MPrudencio, sem que os códigos são seguros até certo ponto, mais preciso de um cód em vba, se poder me ajudar, fico Grato!

Att' Marcio Mendes

 
Postado : 11/03/2017 6:55 am
hronconi
(@hronconi)
Posts: 314
Reputable Member
 

Obrigado pela dica hronconi, mais preciso de um cód em VBA.

Mprudencio,

A solução que lhe indiquei é desenvolvida em VBA, só que é paga.

Henrique
http://henriqueronconi.wix.com/consultoria

Espero ter ajudado! ;)

 
Postado : 11/03/2017 1:44 pm
(@marmen)
Posts: 32
Eminent Member
Topic starter
 

Bom dia,
Qualquer forma de ajuda é bem vinda Henrique.

Vasculhando os tópicos do Planilhando encontrei esse cód , só acho que é pra processador de 32 Bits. Alguém poderia me ajudar?

'ESTA PASTA DE TRABALHO
Private Sub Workbook_Open()
ConsultarNomeComputador
End Sub

'MODULO
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, ByRef nSize As Long) As Long
Private Function lfNomeComputador() As String
Dim stBuff As String * 255, lAPIResult As Long
Dim lBuffLen As Long
lBuffLen = 255
lAPIResult = GetComputerName(stBuff, lBuffLen)
If lBuffLen > 0 Then lfNomeComputador = Left(stBuff, lBuffLen)
End Function
Public Sub ConsultarNomeComputador() 'reconhecer computador para abrir a planilha
Dim CompName As String
CompName = lfNomeComputador 'abaixo coloque os nomes dos usuário autorizados a habilitar as macros
If CompName <> "1ª usuário" Then 'nome usuário
If CompName <> "2ª usuário" Then 'outro nome usuário
  ActiveWindow.Close
End If 'cada usuário End If
End If
End Sub

Att' Marcio Mendes

 
Postado : 15/03/2017 7:37 am
hronconi
(@hronconi)
Posts: 314
Reputable Member
 

Obrigado marmen pela solução apresentada.

Lembrando somente que no seu exemplo o nome do computador terá que ser atribuído forçadamente no código.

É uma boa solução não tão completa, mas pode ser que atenda ao seu caso.

Henrique
http://henriqueronconi.wix.com/consultoria

Espero ter ajudado! ;)

 
Postado : 15/03/2017 8:02 am
(@marmen)
Posts: 32
Eminent Member
Topic starter
 

Então hronconi, no tópico onde eu peguei esse código tinha uma planilha com um cód que verifica o nome do computador do usuário, só que não consegui fazer o download por que o arquivo está ilegível.

Até agora estou com meu problema sem solução rsrs

Att' Marcio Mendes

 
Postado : 15/03/2017 2:42 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Pelo nome da maquina use esse codigo em Esta Pasta de Trabalho


Private Sub Workbook_Open()

If Environ("ComputerName") <> "NOME DA MAQUINA" Then ' NOME DA MAQUINA DEVE SER O NOME DO COMPUTADOR NA REDE.

MsgBox "Esse Arquivo Não Pode Ser Aberto Neste Terminal", vbCritical, "Fechando o Arquivo"
ThisWorkbook.Save
ThisWorkbook.Close

End If

End Sub

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 15/03/2017 3:10 pm
(@marmen)
Posts: 32
Eminent Member
Topic starter
 

Obrigado MPrudencio, o cód está funcionando perfeitamente.

Me tire uma última dúvida sobre este assunto. Se a pessoa colocar o mesmo nome do computador que está autorizado ela conseguirá abrir a planilha, Procede? Tem como usar um cód parecido mais que utilize o IP do computador?

Att' Marcio Mendes

 
Postado : 17/03/2017 7:15 am
(@mprudencio)
Posts: 2749
Famed Member
 

Sim procede, mas para isso o usuario devera ter conhecimento do nome do computador que esta autorizado.

Quanto a usar o IP provavelmente exista alguma solução mas tb vc cai no mesmo problema.

Uma coisa importante (nao tenho certeza), mas acho que não é possivel ter dois micros na mesma rede com o mesmo nome.

Como eu disse anteriormente a segurança do VBA esta mais relacionada ao conhecimento do usuario do que do proprio excel.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 17/03/2017 8:19 am
(@marmen)
Posts: 32
Eminent Member
Topic starter
 

Entendi Marcelo Prudencio

Gostei desse cód, vai ser útil.
Ultima duvida desse tópico, tem como utilizar um cód que retorna o nome do computador em uma célula ou algo do tipo?
dai é só o usuário abrir a planilha e esse cód grava automaticamente o nome do computador na célula especificada.

Att' Marcio Mendes

 
Postado : 27/04/2017 12:40 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Assim

Range("A1").Value = Environ("ComputerName")

Essa linha grava o nome do computador na celula a1

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 27/04/2017 4:54 pm
(@marmen)
Posts: 32
Eminent Member
Topic starter
 

Deu certo, só que ela não está executando automaticamente, eu preciso que ela grave o nome do computador assim que a planilha for aberta :D

Att' Marcio Mendes

 
Postado : 28/04/2017 6:28 am
Página 1 / 2