Logo Hardware.com.br
lindao da mamae
lindao da ma... Novo Membro Registrado
13 Mensagens 0 Curtidas

Como fazer um codigo vba macro que delete todo o projeto caso a senha do projeto seja quebrada

#1 Por lindao da ma... 16/08/2018 - 22:49
ola amigos do excel venho ate vos novamente pra tentar resolver uma duvida que me aflige:
Como fazer um codigo vba macro que delete todo o projeto caso a senha do projeto seja quebrada, sabe? aquele processo usando o 7zip e o hexedit? eu encontrei alguns exemplos antigos na net de mais ou menos uns dez anos atras e por mais que eu tente nao consigo fazer eles funcionarem nas minhas planilhas (uso EXCEL 2016 64bits). se alguem puder me dar uma luz eu agradeço
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#2 Por Marcelo G Pr...
17/08/2018 - 19:09
Cara esse tipo de esforço é perca de tempo.

Se nao habilitar macros sua segurança ja era.

Segurança em Excel é o mesmo que colocar a chave embaixo do tapete com um aviso na porta.

Se ate o Windows, o Office sao pirateados, imagina uma planilha de excel.

Não perca seu tempo com isso.
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.
lindao da mamae
lindao da ma... Novo Membro Registrado
13 Mensagens 0 Curtidas
#3 Por lindao da ma...
17/08/2018 - 23:47
marcelo! depois de haver postado o topico eu continuei minhas buscas pela net. e olhando aqui e ali. consegui montar um codigo que caso seja aberta a planilha sem que o projeto esteja protegido ele simplesmente deleta todos os codigos do projeto, e para evitar que a planilha seja fechado sem que o codigo esteja protegido eu usei um codigo que faz o bloqueio antes de salvar. como eu sei que aquela quebra de senha que usa o 7zip e o hexedit precisa que em algum momento o projeto seja salvo entao ele vai salvar e colocar senha novamente.. caso ainda assim alguem consiga abrir ele sem que esteja protegido a macro de abertura ira apagar todos os codigos.
segue abaixo o codigo que deve estar em EstaPastaDeTrabalho
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
ThisWorkbook.Close
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

SendKeys "%{F11}", True

VBProject.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute

SendKeys "^({TAB})"
SendKeys " "
SendKeys "{+}"

SendKeys "{TAB}" & 2997925 & "{TAB}" & 2997925 & "~", True

SendKeys "%q"

End Sub

Private Sub Workbook_Open()

Dim i As Long, Protected_ As Boolean, Text1 As String, Text2 As String, Text3 As String

On Error Resume Next
ActiveWorkbook.VBProject.References.AddFromGuid GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3
On Error GoTo 0
If ActiveWorkbook.VBProject.Protection = 1 Then 'use 1 instead of "vbext_pp_locked"
Protected_ = True
ElseIf ActiveWorkbook.VBProject.Protection = 0 Then 'use 1 instead of "vbext_pp_none"
Protected_ = False


Dim Component As Object

' AQUI DELETA TODOS MODULOS DO VBA
For Each Component In ActiveWorkbook.VBProject.VBComponents
With Component.CodeModule
.DeleteLines 1, .CountOfLines
End With
Next

End If
End Sub

se alguem tiver um conselho para refinar o codigo e ou melhorar eu agradeço. assim como se alguem tambem encontrar alguma falha e quiser me avisar tambem agradeço
Mauriciodez
Mauriciodez Highlander Registrado
4.9K Mensagens 1.6K Curtidas
#6 Por Mauriciodez
19/08/2018 - 17:20
lindao da mamae disse:
na verdade vou inserir esse codigo em um projeto que funciona totalmente com um unico formulario multipage entao se ele quiser ter a funcionalidade tera que ativar sempre a execuçao das macros. certo?


acho massa gente cabeça dura ... bicho ... ja te falaram q não rola .. É nessas horas que torço para que o conteúdo seja ou ilegal ou super confidencial, só pra ver o cidadão se lascar todo ... aí aprende a escutar os mais experientes !!!


" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
lindao da mamae
lindao da ma... Novo Membro Registrado
13 Mensagens 0 Curtidas
#7 Por lindao da ma...
19/08/2018 - 22:54
valeu pelo conselho meu chapa. mas vou continuar tentando dificultar ao maximo que fuçem no meu codigo. ilegal nao é pois eu usei partes de codigos disponiveis na net, principalmente aqui nesse forum, fora os que eu montei de cabeça. confidencial tambem nao é e quando estiver pronto ai sim os dados que as planilhas terao para mim serao importantes entao se alguem um dia pegar minha planilha. ....
agora.. eu pensei tambem em ocultar as planilhas com senha e sempre que abrir o arquivo o formulario sera aberto automaticamente. assim para visualizar as planilhas sera necessario ativar a visualizaçao das macros e vou implementar o codigo para que alem de apagar as macros tambem apague os dados da planilha .
Mauriciodez
Mauriciodez Highlander Registrado
4.9K Mensagens 1.6K Curtidas
#8 Por Mauriciodez
20/08/2018 - 12:49
lindao da mamae disse:

agora.. eu pensei tambem em ocultar as planilhas com senha e sempre que abrir o arquivo o formulario sera aberto automaticamente. assim para visualizar as planilhas sera necessario ativar a visualizaçao das macros e ...


logico que não jovem, se vc tem um form para desocultar vc tem um codigo para ocultar, logo se alguém abrir a planilha sem macro, ele vai ter uma planilha com todas as guias no default ... que é não ocultas.


" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#9 Por Marcelo G Pr...
20/08/2018 - 17:07
@lindao da mamae vamos fazer o seguinte:

Coloque um codigo qualquer em uma planilha VBA junto com a sua sugestao de segurança.

Vou Quebrar a senha e postar seu codigo.


Pra quebrar seu galho, vou explicar!

@Mauriciodez o mais engraçado é ele pedir conselhos, e nao ouvir, e nem testar o se sugeriu.

PS: Cuidado para vc nao ser vitima do seu proprio veneno. Pense!
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.
lindao da mamae
lindao da ma... Novo Membro Registrado
13 Mensagens 0 Curtidas
#10 Por lindao da ma...
01/11/2018 - 22:48
Marcelo G Prudencio disse:
@lindao da mamae vamos fazer o seguinte:

Coloque um codigo qualquer em uma planilha VBA junto com a sua sugestao de segurança.

Vou Quebrar a senha e postar seu codigo.


Pra quebrar seu galho, vou explicar!

@Mauriciodez o mais engraçado é ele pedir conselhos, e nao ouvir, e nem testar o se sugeriu.

PS: Cuidado para vc nao ser vitima do seu proprio veneno. Pense!

oi amigo conseguiu? foi dificil? me passa os procedimentos que voce usou. foi hard ou facil? se foi facil entao devo aprimorar mais um pouco meus conhecimentos em vba antes de colocar no meu curriculo.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#11 Por Marcelo G Pr...
02/11/2018 - 09:33
lindao da mamae disse:
oi amigo conseguiu? foi dificil? me passa os procedimentos que voce usou. foi hard ou facil? se foi facil entao devo aprimorar mais um pouco meus conhecimentos em vba antes de colocar no meu curriculo.

Conseguiu o que amigo?

Vc nao postou nenhuma planilha.

Continuo aguardando.
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.
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#13 Por Marcelo G Pr...
02/11/2018 - 20:50
Isso é o suficiente ou precisa de mais codigos

Sub atualiza_form_compras() 'carrega a listbox da aba compras com os dados da tabela ordem
Application.ScreenUpdating = False
Dim W As Worksheet
Dim j As Double
Set W = Sheets("ordem")
j = 0
classificar_notas
frmnota.list_compras.Clear
Do While W.Range("A2").Offset(j, 0).Value <> ""
If W.Range("A2").Offset(j, 3).Value = "C" Then
With frmnota.list_compras
.AddItem
.List(i, 0) = W.Range("A2").Offset(j, 0).Value
.List(i, 1) = W.Range("A2").Offset(j, 1).Value
.List(i, 2) = W.Range("A2").Offset(j, 2).Value
.List(i, 3) = W.Range("A2").Offset(j, 3).Value
.List(i, 4) = W.Range("A2").Offset(j, 4).Value
.List(i, 5) = W.Range("A2").Offset(j, 5).Value
.List(i, 6) = W.Range("A2").Offset(j, 6).Value
.List(i, 7) = W.Range("A2").Offset(j, 7).Value
.List(i, 8) = W.Range("A2").Offset(j, 36).Value
i = i + 1
End With
End If
j = j + 1
Loop
Application.ScreenUpdating = True
End Sub
Sub atualiza_form_vendas() 'carrega a listbox da aba vendas com os dados da tabela ordem
Application.ScreenUpdating = False
Dim W As Worksheet
Dim j As Double
Set W = Sheets("ordem")
j = 0
classificar_notas
frmnota.list_vendas.Clear
Do While W.Range("A2").Offset(j, 0).Value <> ""
If W.Range("A2").Offset(j, 3).Value = "V" Then
With frmnota.list_vendas
.AddItem
.List(i, 0) = W.Range("A2").Offset(j, 0).Value
.List(i, 1) = W.Range("A2").Offset(j, 1).Value
.List(i, 2) = W.Range("A2").Offset(j, 2).Value
.List(i, 3) = W.Range("A2").Offset(j, 3).Value
.List(i, 4) = W.Range("A2").Offset(j, 4).Value
.List(i, 5) = W.Range("A2").Offset(j, 5).Value
.List(i, 6) = W.Range("A2").Offset(j, 6).Value
.List(i, 7) = W.Range("A2").Offset(j, 7).Value
.List(i, 8) = W.Range("A2").Offset(j, 36).Value
i = i + 1
End With
End If
j = j + 1
Loop
Application.ScreenUpdating = True
End Sub

Sub atualiza_form_vendas_descoberto()
Application.ScreenUpdating = False
Dim W As Worksheet

Dim j As Double
Set W = Sheets("compras e vendas")
j = 0

frmnota.list_vendas_descoberto.Clear
Do While W.Range("J2").Offset(j, 0).Value <> ""
With frmnota.list_vendas_descoberto
.AddItem
.List(i, 0) = W.Range("J2").Offset(j, 0).Value
.List(i, 1) = W.Range("J2").Offset(j, 1).Value
.List(i, 2) = W.Range("J2").Offset(j, 2).Value
.List(i, 3) = W.Range("J2").Offset(j, 3).Value
.List(i, 4) = W.Range("J2").Offset(j, 4).Value
.List(i, 5) = W.Range("J2").Offset(j, 5).Value
.List(i, 6) = W.Range("J2").Offset(j, 6).Value
.List(i, 7) = W.Range("J2").Offset(j, 7).Value
i = i + 1
End With
j = j + 1
Loop
Application.ScreenUpdating = True

End Sub
Sub atualiza_form_comven()
Application.ScreenUpdating = False
Dim W As Worksheet

Dim j As Double
Set W = Sheets("compras e vendas")
j = 0

frmnota.list_comven.Clear
Do While W.Range("S2").Offset(j, 0).Value <> ""
With frmnota.list_comven
.AddItem
.List(i, 0) = W.Range("S2").Offset(j, 0).Value
.List(i, 1) = W.Range("S2").Offset(j, 1).Value
.List(i, 2) = W.Range("S2").Offset(j, 4).Value

.List(i, 3) = W.Range("S2").Offset(j, 5).Value
.List(i, 4) = W.Range("S2").Offset(j, 6).Value
.List(i, 5) = W.Range("S2").Offset(j, 7).Value
.List(i, 6) = W.Range("S2").Offset(j, 8).Value
.List(i, 7) = W.Range("S2").Offset(j, 13).Value
.List(i, 8) = W.Range("S2").Offset(j, 14).Value
.List(i, 9) = W.Range("S2").Offset(j, 15).Value
i = i + 1
End With
j = j + 1
Loop
Application.ScreenUpdating = True

End Sub
Sub atualiza_form_frmaçoes()
Application.ScreenUpdating = False
Dim W As Worksheet
Dim j As Double, i As Double
Set W = Sheets("catalogo")
j = 0
i = 0
frmaçoes.lista_dados_açoes.Clear
Do While W.Range("A2").Offset(j, 0).Value <> ""
With frmaçoes.lista_dados_açoes
.AddItem
.List(i, 0) = W.Range("A2").Offset(j, 0).Value
.List(i, 1) = W.Range("A2").Offset(j, 1).Value
.List(i, 2) = W.Range("A2").Offset(j, 2).Value
.List(i, 3) = W.Range("A2").Offset(j, 3).Value
.List(i, 4) = W.Range("A2").Offset(j, 4).Value
.List(i, 5) = W.Range("A2").Offset(j, 5).Value
i = i + 1
End With
j = j + 1
Loop
frmaçoes.lblquant_itens = "foram encontrados " & frmaçoes.lista_dados_açoes.ListCount & " itens"

Application.ScreenUpdating = True
End Sub

Se vc quiser eu coloco o restante do projeto tb.
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.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal