fechar

Aprender Excel

APRENDER EXCEL

DICAS E NOVIDADES SOBRE EXCEL

Como criar uma planilha que só abre no seu computador

por: Maximiliano Meyer em VBA, no dia 13/09 | 12:00 atualizado em 15/09 | 12:00

E aí, pessoal. Tudo bem?

A dica de conteúdo para hoje é mais uma que chegou através do e-mail max@desenvolveweb.com.br. Portanto, se você tem alguma dúvida em Excel, pode dar a sugestão no endereço acima.

Nosso leitor queria saber se há um código permite a execução de uma planilha em um computador pré-determinado e nenhum outro, ou seja, mesmo que alguém tenha a planilha, não conseguirá executar a mesma, pois o nome não vai bater.

Quer segurança maior que esta?? Com este código sua segurança só poderá ser burlada caso alguém formate o computador e registre a máquina com o mesmo nome que você usa no seu pc, aquele mesmo em que a planilha está autorizada a ser executada.

Funcionará da seguinte maneira: ao abrir a planilha aperte alt + F11 e você estará na janela de edição de VBA. Clique com o direito em 'Microsoft Excel Objetos' no lado esquerdo e clique em 'Inserir...' e depois em 'módulo'. Na janela que abrir você irá digitar o código

Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, ByRef nSize As Long) As Long

'Retorna o nome do computador
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

'Verifica se o nome do computador é aquele que foi autorizado
Public Sub lsRetornaNomeComputador()
      Dim CompName As String
      CompName = lfNomeComputador
         If CompName <> "PC_Max" Then 'Aqui você irá colocar o nome da máquina autorizada
         MsgBox "Este computador não tem direito de executar esta aplicação." 'Mensagem de erro exibida se o nome não bater
         ActiveWorkbook.Close SaveChanges:=False
         End If
  End Sub
End Sub

O esquema é super fácil e funciona da seguinte maneira: Ali onde está escrito

If CompName <> "PC_Max" Then

é o local onde você irá substituir "PC_Max" pelo nome do computador que poderá executar a planilha sem problemas.

Não sabe o nome da máquina? Execute o código abaixo no seu VBA ou, clique aqui e baixe uma planilha que verifica automaticamente para você. O código de verificação é: 

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 lsRetornaNomeComputador()
     Dim CompName As String
     CompName = lfNomeComputador
     MsgBox "O nome da sua máquina é: " & CompName
End Sub 

Para finalizar. Depois que a planilha verifica que o usuário não está autorizado ela encerra a mesma.

Mas claro que este bloqueio só vai funcionar se a pessoa ativar as macros, certo? Certíssimo, por isso, aconselho você a inserir também o código que 'força' o usuário a ativar as macros caso queira mexer em uma planilha.

E como segurança nunca é demais, não esqueça de bloquear a edição do código VBA, é claro, senão qualquer um que já tiver visitado essa página vai saber que é só alterar uma pequena parte do código.

E se você quiser o MÁXIMO em segurança pode ainda fazer com que a mesma se AUTOEXCLUA.

Ahh, e não se esqueça de colocar uma frase legal para quem tentar executar sua planilha protegida =)

Abaixo, o botão de download para você baixar nosso exemplo, mas já advirto que você não vai conseguir abrir hehe. P.S. Código não protegido, então você pode fazer alterações e testes.