Estou na ativa para ajudar e ser ajudado(rs). Posto o codigo abaixo, precisa ser aprimorado, mas pelo que vi funciona, caso a senha seja quebrada.
Ah. Desculpem se não postei na forma do forum, foi a primeira vez. Abs. Felipe Dasi
Código: Selecionar todos
‘PARA APAGAR O VBA AO QUEBRAR A SENHA
‘ANTES DE PASSAR A PLANILHA PRO USUARIO TIRE A SENHA DE A1 E SALVE.
‘AO FAZER ISSO, O USUARIO USA A PLANILHA NORMALMENTE, MAS SE QUEBRAR A SENHA O PROJETO VBA APAGA E/OU DÁ ERRO DE ABERTURA.
NESTA PASTA DE TRABALHO:
Option Explicit
Private Sub Workbook_Open()
If Application.Version > 9 Then
Dim VisualBasicProject As Object
On Error Resume Next
Set VisualBasicProject = ActiveWorkbook.VBProject
If Not Err.Number = 0 Then
End If
'DESABILITA ESC E INICIA RELOGIO
Application.EnableCancelKey = xlDisabled
Run "IniciaRelogio"
End If
End Sub
'
'TODAS AS POSSIBILIDADES
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Run "ParaRelogio"
'PODE COLOCAR CODIGO PROPRIO AQUI
Run "IniciaRelogio"
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Run "ParaRelogio"
'PODE COLOCAR CODIGO PROPRIO AQUI
Run "IniciaRelogio"
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Run "ParaRelogio"
'PODE COLOCAR CODIGO PROPRIO AQUI
Run "IniciaRelogio"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Run "ParaRelogio"
'PODE COLOCAR CODIGO PROPRIO AQUI
Run "IniciaRelogio"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Run "ParaRelogio"
'PODE COLOCAR CODIGO PROPRIO AQUI'
End Sub
ACESSE O VBA
ABRA UM MODULO E COLOQUE ESTE CODIGO
'Se a senha em A1 for igual a 123
'Se a senha em Comentários em propriedades da Planilha = 456
'Se a senha do VBA = 123
'RESULTADO O projeto VBA é aberto
'Resumindo, se uma das senha não bater o VBA é apagado
'Se você tirar a senha de A1 e Salvar, a planilha pode ser usada normalmente, mas
' se o usuário quebrar a senha, ao acessar o modulo o VBA serás apagado.
Option Explicit
Public IdleTime As Date
Private Sub DeletaVBA()
With ThisWorkbook
If Plan1.[A1] = "123" _
And .BuiltinDocumentProperties("Comments") = "456" Then
'COLOCANDO A SENHA CORRETA DO VBA E MANTENDO AS OUTRAS DUAS EM A1 E EM PROPRIEDADES O RELOGIO NÃO É ATIVADO.
'CASO CONTRARIO O RELOGIO É ATIVADO E EM 5 SEGUNDOS O PROJETO VBA SERÁ APAGADO.
Run "ParaRelogio"
Exit Sub
Else
If .VBProject.Protection = 0 Then 'unlocked
Run "ParaRelogio"
Dim Component As Object
' AQUI DELETA TODOS MODULOS DO VBA
For Each Component In .VBProject.VBComponents
With Component.CodeModule
.DeleteLines 1, .CountOfLines
End With
Next
'SALVA AS ALTERAÇÕES FEITAS NA PLANILHA
.Save
'SE QUISER COLOCAR UMA MENSAGEM
MsgBox "SENHA(S) INCORRETA(S) - " & _
"TODOS OS MODULOS SERÃO APAGADOS... :o)"
Workbooks.Open (.FullName)
.Close
Else
'INICIA A CONTAGEM DO RELOGIO SE VBA FOR QUEBRADO
Run "IniciaRelogio"
End If
End If
End With
Exit Sub
End Sub
Private Sub IniciaRelogio()
If Plan1.[A1] = "123" _
And ThisWorkbook.BuiltinDocumentProperties("Comments") = "456" _
Then Exit Sub
'AQUI É O TEMPO DE ABERTURA DO VBA
IdleTime = Now + TimeValue("00:00:05")
Application.OnTime IdleTime, "DeletaVBA"
End Sub
Private Sub ParaRelogio()
On Error Resume Next
Application.OnTime EarliestTime:=IdleTime, _
Procedure:="DeletaVBA", Schedule:=False
End Sub