Notifications
Clear all

Limitar uso de uma planilha

12 Posts
7 Usuários
0 Reactions
4,816 Visualizações
(@polly)
Posts: 21
Eminent Member
Topic starter
 

Olá a todos do Planilhando... depois de algum tempo ausente, voltei... hehhehe. Hoje queria a atenção de todos os experts do fórum para me ajudar em uma questão.

Pois bem, vamos à questão:
Sei que existe um código em que se eu informar o nome do computador, ele permite o uso da planilha apenas naquele computador, ou seja, se tentar abrir em outro PC, a planilha não abrirá.

Se alguém lembrar, SOU PROFESSORA, e compartilho inúmeras planilhas com meus alunos. Eis então que imaginei: E se fosse possível criar um código que ao abrir a planilha pela primeira vez em um computador "X" ela pegasse o nome desse computador e adicionaria ao código que permite o uso apenas naquele computador, isso seria possível?
Desta forma, eu impediria que os alunos compartilhassem as planilhas deles, evitando assim, que pudessem copiar tudo de seu colega, pois, como sabem, sempre existem aqueles espertinhos que não querem fazer nada.

Desde já, obrigado a todos que dispuserem a ajudar e, se existir alguma dúvida, estarei atenta ao tópico para esclarecê-la o quanto antes.

 
Postado : 02/05/2013 12:51 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

polly,

Boa Noite!

Bem... pelo menos na minha modesta opinião, esse tipo de assunto não é tão simples de ser resolvido. Veja:

criar um código que ao abrir a planilha pela primeira vez em um computador "X" ela pegasse o nome desse computador e adicionaria ao código que permite o uso apenas naquele computador

. Qualquer que seja o código que você coloque, sempre que um dos seus alunos instalar a planilha na máquina dele, vai ser sempre a primeira vez. Correto?

Desse modo, minha sugestão seria assim:
1 - Quando você fosse disponibilizar o arquivo para o aluno que você quer que somente ele execute, primeiramente você disponibilizaria um arquivo Excel que ele deveria executar na máquina dele e depois lhe enviar. Esse arquivo seria o arquivo que chamei de Chave de Dados.xlsm (anexo abaixo). Aparentemente, quando o aluno abrir esse arquivo na máquina dele, nada vai acontecer. Existe um código no evento Auto_Open do Workbook que pega o nome do computador e o nome do usuário registrados nas variáveis de ambiente quando se instala o sistema operaciopnal no micro. Esses dados são capturados pelo código e gravados numa aba chamada Plan4 (que está oculta e protegida por uma senha longa e de difícil quebra por programas de quebra de senhas) , nas células Z1 e Z2 (que estão também com a cor de letra BRANCA para evitar deixar esses dados expostos a curiosos em caso de desbloqueio da planilha. Não deixei a coluna Z também oculta para não levantar suspeitas. A senha para desbloquear a planilha (bloqueio e desbloqueio também é feito pelo código) é pollyforumpl@nilh@ndo123456. O projeto em VBA também está protegido com a senha 123 que, obviamente, deve ser alterada para uma senha complexa e de mais de 14 caracteres para dificultar. Após coletar os dados e inserir em Z1 e Z2, o código salva o arquivo e fecha o Excel.
2 - O aluno deve então enviar o arquivo para você que vai abrir o mesmo, não executa as macros (quando daquela pergunta inicial do sistema de segurança do Excel) e vai até a Plan4 e ver o que existe nas células Z1 e Z2.
3 - No arquivo que você vai fornecer para o aluno (o que você não quer que seja copiado), você insere, também no evento Auto_Open do Workbook, o código abaixo, já com o nome do computador e o nome do usuário do mesmo, fornecido pelo arquivo Chave de Dados.xlsm. Esse código verifica se o nome do computador e o nome do usuário é aquele fornecido pelo aluno e, se não for, informa que o uso da planilha é não autorizado e fecha o Excel. Coloquei esse código também no arquivo Chave de Dados.xlsm (rotina chamada Verifica) apenas para constar. Obviamente ele não deve ficar nesse arquivo.
4 - Daí, qualquer aluno que copie o arquivo que você forneceu, que checa no início o nome do usuário e o nome do computador, não conseguirá executar o arquivo. A menos que ele descubra as senhas e todo esse processo. Obviamente, também é necessário que o projeto VBA do arquivo que você vai fornecer também esteja protegido por senha.

Sub Verifica()
    'Aqui você vai fornecer a planilha já com os dados capurados do seu aluno
    If VBA.Environ("computername") <> "WAGNER-VAIO" And _
    VBA.Environ("username") <> "Wagner" Then
        MsgBox "Esta planilha não está autorizada para esse computador!", vbCritical, "USO NÃO AUTORIZADO"
        ActiveWorkbook.Save
        Application.Quit
    Else
        Exit Sub
    End If
End Sub
 
Postado : 02/05/2013 4:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A ideolologia e sistematica do colega Wagner é valida e bem interessante, mas eu acrescentaria uma obs quanto a questão de Proteção, lógicamente somente se estas planilhas forem de grande relevância para o aluno obter Notas ele poderá ir atrás de recursos para quebrar a senha, por isso que o ideal é mesmo procurar confeccionar uma misturando varios tipos de caracteres, numeros e por ai vai, e quanto maior, mais dificil, mas não impossível ficará a quebradas senhas.

Esta questão de Proteção já foi discutidas em vários foruns, uns querendo por Validade, outros para evitarem que se faça cópias dos arquivos, e dentre as ideias , cogito-su, capturar nome do PC, do Usuario, do serial e numero do HD, entre outros varios recursos, mas eu até hoje ainda não vi nenhum que seja 100% eficiente, lógicamente estou falando referente ao excel 2003 e 2007 sem utilizarem a opção de criptografar a senha.

Por exemplo a senha que o Wagner sugeriu "pollyforumpl@nilh@ndo123456", eu a defini para o Projeto do VBA, temos 27 caracteres, e a quebrei em praticamente 1 segundo, e vale lembrar tambem um outro recurso que não necessita de nenhum programa especial para retirar a senha é o uso do BrOffice que abre os arquivos excel, apesar da liguagem de programação serem diferentes e você não poder utilizar o arquivo, você terá acesso as informações contidas no arquivo e tambem acesso as rotinas sem precisar de nenhuma senha.
Isto posto, resolvi comentar somente por causa da questão proteção, se hoje em dia nem os aplicativos mais complexos são totalmente seguros, imagine os da suite do Office.
Quanto ao que citei sobre o BrOffice, deem uma lida no artigo abaixo :
Planilha Excel 2007 protegida por senha
http://cafe-ti.blog.br/746~planilha-exc ... senha.html

{]s

 
Postado : 02/05/2013 5:34 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Polly,

Excelente a contribuição do colega Mauro Coutinho. Eu já tinha esse conhecimento também e concordo em gênero, número e grau com ele (Mauro). Na verdade, em termos de TI, não existe nada 100% seguro. Como pensei que o objetivo desse seu arquivo para os alunos não é nada que precisasse ser tão seguro, sugeri essa alternativa como paliativo para o problema.

Todavia, é bom lembrar que até as grandes corporações de desenvolvimento de softwares, que utilizam Tokens como chave de segurança para seus aplicativos, têm chaves, tokens e senhas quebradas. Nesse caso, estamos falando de alta espionagem e engenharia social. Gente especializada no ramo que vive de picaretagem. Mas... realmente, não há nada seguro!

 
Postado : 02/05/2013 7:17 pm
(@polly)
Posts: 21
Eminent Member
Topic starter
 

Caro Wagner, também sei que quando falamos sobre informática. nada é 100% seguro, porém, achei interessante sua ideia. Vou tentar utilizá-la, não creio que se deem ao trabalho para tentar abrir em outro computador. Vou baixar seu arquivo agora e logo dou uma posição, inclusive, caso tenha alguma dificuldade, darei o grito daqui.

 
Postado : 02/05/2013 7:51 pm
(@maesso)
Posts: 0
New Member
 

Olá, sou novo nessa área de vba, minha duvida era exatamente essa de bloquear uma planilha, para que seja executada somente em uma maquina, tentei baixar o arquivo do Wagner, mas esta corrompido, tem como postar Chave de dados rar. novamente? obg

 
Postado : 26/02/2015 8:51 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

maesso,

Bom Dia!

Infelizmente, não tenho mais esse arquivo.

 
Postado : 27/02/2015 4:51 am
(@selmo)
Posts: 236
Reputable Member
 

Apenas complementando o que já foi dito, impedir o uso de uma planilha em um computador, proteger o código com X caracteres, e até mesmo embuti-lo em um executável não o torna mais seguro, apenas dificulta o acesso. Um bom exemplo de como isso pode se tornar obsoleto é uma planilha em questão que encontrei pela Web enquanto procurava sobre uma forma eficaz de proteger os meus tão queridos códigos de olhares mais indiscretos, e planilha em questão desprotege um projeto VBA em questão de segundos, isso sem falar sobre uma certa rotina que retira a proteção de abas e afins, ou seja, em questão de segurança nada é 100% eficaz. A única forma de proteger seus dados seria mantê-los em seu computador, e isso sem que ele estivesse conectado a nenhuma rede, um verdadeiro "solitário", apenas podemos tentar dificultar ao máximo o acesso. Para aqueles que se interessarem a critério de estudo, a planilha em questão está hospedada no fórum do Tomás Vásquez, lembrando que ela deve ser usada apenas para estudo, e se alguém conseguir um modo de proteger um arquivo de forma que sobreviva a ela, gostaria muito de saber como, link do post a seguir
http://www.tomasvasquez.com.br/forum/vi ... PCeZCwYG-Q

 
Postado : 27/02/2015 10:51 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Selmo, já viu este link?

http://www.tomasvasquez.com.br/blog/en/ ... ojetos-vba

 
Postado : 27/02/2015 11:02 am
(@selmo)
Posts: 236
Reputable Member
 

Já havia visto, até utilizei parte dos códigos para uma implementação em uma planilha minha mesmo, só que ficamos a mercê da central de confiabilidade, pois se as macros estiverem desabilitadas todo o projeto fica exposto mesmo com esse código de verificação, para ter uma ideia, acrescentei a rotina mais umas 10 verificações diferentes, desde o código de proteção, conteudo de celulas, propriedades do documento, nome do computador, etc. Mesmo assim, se as macros estiverem desabilitadas o projeto acaba ficando exposto. Uma saida seria embuti-la em um executavel, mas como ela vai ser usada em computadores da empresa onde trabalho, e lá a segurança é rigida (até mesmo no uso de pendrives) então isso tambem fica inviavel, e se depender apenas da segurança da "Microsofre" então estamos de certa forma sem saida, o jeito seria divulgar o projeto com código aberto mesmo :/

 
Postado : 27/02/2015 11:49 am
(@xdinho)
Posts: 0
New Member
 

Olá!

Preciso de uma planilha cuja única função é rodar em cada computador (que eu quiser) e buscar o nome deste computador; outra onde estará o cadastro com os nomes dos computadores - vou digitar o que a planilha anterior pegou em cada computador. E o script que vou inserir em cada uma das minhas planilhas que le o nome do computador que está abrindo a planilha e testa se este computador esta no cadastro. Se não estiver não deixa abrir a planilha com uma msg box "computador não autorizado". Este script irei colar na abertura de cada uma das minhas planilhas.

Isso é um trabalho, para mim, o cliente queria registrar nome de usuários. Preciso disso para Quinta.

 
Postado : 29/12/2015 5:23 pm
(@selmo)
Posts: 236
Reputable Member
 

Veja se isso lhe ajuda

Dim User As String
Dim UltimaLinha, i As Long
Dim Acesso As Boolean

Sub AcessoRestrito()

Acesso = False
User = VBA.Environ("username") 'Aqui ele insere na variavel o nome do computador
UltimaLinha = Sheets("plan1").Cells(Cells.Rows.Count, 1).End(xlUp).Row 'Verifica a ultima linha preenchida

'irá verificar em cada linha da planilha até encontra o usuário
'Caso a coluna tenha titulos, informa a proxima linha com os dados EX.: i = 2
For i = 1 To UltimaLinha
    If Sheets("plan1").Range("A" & i).Value = User Then
        Acesso = True
    End If
Next
VerAcesso
End Sub
Private Sub VerAcesso()
    If Acesso = True Then
        'Aqui você insere o código caso o usuário tenha acesso
        MsgBox "Usuário autenticado, acesso liberado", vbInformation, "Acesso Permitido"
        Else
    'Aqui você insere o código caso o usuário não deva acessar a planilha
    MsgBox "Usuário sem acesso, contatar Administrador", vbCritical, "Acesso Restrito"
    End If
End Sub
 
Postado : 11/01/2016 4:56 am