Notifications
Clear all

Proteção erro

10 Posts
2 Usuários
0 Reactions
1,089 Visualizações
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Boa noite !

Useu esse código e funcionou corretamente no Office 2007 e deu erro no Office 2016 - "Erro em tempo de execução, o método insert da classe range falhou"

Coloquei num módulo e depois chamei nas plans assim:

Call Desprotege
Call Protege

Sub Desprotege()
Dim Sht As Worksheet

    For Each Sht In Application.Worksheets
        Sht.Unprotect ("123")
    Next
    
End Sub

Sub Protege()
Dim Sht As Worksheet

    For Each Sht In Application.Worksheets
        Sht.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True
    Next

End Sub

Usei esse código abaixo e funcionou nos 2 offices ( 2207 e 2016 )

ActiveSheet.Unprotect Password:="123"
ActiveSheet.Protect Password:="123"

Será por causa devo colocar ActiveSheet ?

Usei Insert, pq coloquei um macro que insere linha

Obrigado desde já !

 
Postado : 16/12/2016 6:46 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Por favor coloque o código inteiro...
Mas de cara eu sugiro que use thisworkbook.worksheets a usar application.worksheets

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/12/2016 6:11 am
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Mas o segundo código não funciona igual ao primeiro ?

 
Postado : 17/12/2016 6:33 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Vc colocou duas rotinas uma que é pra proteger e outra pra desproteger as planilhas de um arquivo. Só aí, conceitual mente, podemos afirmar com. Certeza que não funcionam da mesma maneira, pq fazem coisas diferentes.
Agora, vc disse que em alguma outra versão do seu código, existe um activesheet com um insert, isso pode fazer dar erro, mas eu só saberei se vc colocar seu código completo aqui no post. Portanto, por favor, disponibilize o código completo, ou pelo menos a sub onde o erro acontece...

O primeiro bloco de códigos faz a proteção ou desproteção de todas as planilhas
O segundo bloco, só o faz na planilha ativa... Se não pudermos saber onde o insert acontece, fica complicado...

Valeu

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/12/2016 7:49 am
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Mas posso fazer assim também que faz proteção em todas as planilhas, já que vou ter que chamar em todas ( Call Desprotege e Call Protege ) igual ao primeiro código.

Sub Desprotege()

ActiveSheet.Unprotect Password:="123"

End Sub

Sub Protege()

    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="123"

End Sub

 
Postado : 17/12/2016 9:09 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

"Erro em tempo de execução, o método insert da classe range falhou" - Usei Insert, pq coloquei um macro que insere linha

Por favor coloque o código inteiro...

Portanto, por favor, disponibilize o código completo, ou pelo menos a sub onde o erro acontece...

Amigo, não sei quantas vezes eu precisarei pedir pra vc colocar o código inteiro, aquele que contém a linha com o Insert que dá erro.
Você pode por favor me ajudar a te ajudar, e ao invés de ficar postando o código da proteção e desproteção, vc colocar o código com o insert, e agora de preferência, a sua planilha também ?
Digo isso, algumas coisas podem impedir o insert de rodar, que pode ou não ser a proteção. Se tivermos acesso a sua planilha, fica mais fácil identificarmos se não roda no 2016, ou se alguma outra razão não a deixou rodar no 2016, por exemplo, algo preenchido na última linha da planilha...

Enfim, vc quer MESMO ajuda ? Ajude-nos a te ajudar, por favor. Valeu.

Em tempo, no Excel 2016 *(que é onde posso conferir agora) existe uma opção na lista de proteções:

Que em código, seria assim:

Planilha.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowInsertingRows:=True

Talvez seja esse seu problema. no 2007 não precisava mas no 2016, precisa.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/12/2016 9:26 am
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Acho que você não entendeu o que perguntei

"Mas posso fazer assim também que faz proteção em todas as planilhas, já que vou ter que chamar em todas ( Call Desprotege e Call Protege ) igual ao primeiro código."
e não perguntando do erro, sendo que o segundo código está trabalhando corretamente, por isso foi feito a pergunta qual a diferença e respondido.

Agora sobre a planilha, não estou no local !

 
Postado : 17/12/2016 3:38 pm
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Eu achava que excluir linhas e inserir ficava ativa ao selecionar conforme você mostrou, mas vou testar e ver se os 2 códigos trabalha corretamente.

 
Postado : 17/12/2016 3:46 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

v tem razão, eu não havia entendido a pergunta.
sim vc pode usar o loop, mas eu trocaria o application.worksheets por thisworkbook.worksheets *(vide minha primeira resposta)

sim, ambas as formas de proteger são iguais !

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/12/2016 5:04 pm
(@vonzuben)
Posts: 549
Honorable Member
Topic starter
 

Valeu, obrigadão e bom Domingo !

 
Postado : 18/12/2016 4:32 am