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
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Postado : 02/05/2013 4:13 pm