Desativar renomeaçã...
 
Notifications
Clear all

Desativar renomeação de planilhas

9 Posts
5 Usuários
0 Reactions
1,538 Visualizações
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

Bom dia pessoal,

Eu tenho aqui no trabalho varias planilhas cheias de macros e por isso não consigo "Proteger a Pasta de Trabalho" já que quando faço isso algumas macros deixam de funcionar corretamente.

Desta forma, eu gostaria de saber se existe uma forma via VBA de impedir que os usuários adicionem novas planilhas e/ou renomeiem as já existentes.

Desde já agradeço a ajuda.

 
Postado : 14/01/2016 8:27 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde,

Você pode proteger a pasta de trabalho:

Menu Revisão / Proteger Pasta de Trabalho

Abraço

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

 
Postado : 14/01/2016 9:27 am
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

JValq, eu pedi ajuda para fazer via VBA justamente pq não posso proteger a pasta de trabalho, foi a primeira coisa que falei.

 
Postado : 14/01/2016 9:49 am
(@messiasmbm)
Posts: 223
Estimable Member
 

Apague os dados de suas planilhas e mande o arquivos para que possamos te ajudar...

 
Postado : 14/01/2016 10:29 am
(@edcronos2)
Posts: 346
Reputable Member
 

pode tbm proteger a pasta de trabalho e colocar uma linha de codigo nas macros para des proteger antes de atuar, e para proteger quando terminar

 
Postado : 14/01/2016 10:45 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Desculpe... Acho que passei batido pelo trecho que você disse que não consegue proteger a pasta de trabalho.
Acho que uma opção seria cada macro, ao ser executada, desproteger e proteger a pasta de trabalho:

Sub Macro()
    ActiveWorkbook.Unprotect "SENHA"
    '
    'Código original da macro
    '
    ActiveWorkbook.Protect "SENHA"
End Sub

É só substituir "SENHA" pela senha que você vai utilizar.

Abraço

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

 
Postado : 14/01/2016 10:49 am
(@messiasmbm)
Posts: 223
Estimable Member
 

abra o vba e vá em ( esta pasta de trabalho )
coloque o código abaixo:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
If ActiveWorkbook.Worksheets.Count = 5 Then 'conte quantas planilhas vc tem e coloque a quantidade mais 1
                                                                      'se vc tem 10 planilhas coloque 11 no lugar do 5
MsgBox "Não foi possivel adicionar uma planilha, fale com o administrador!"
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End If
End Sub

Esse código impede de adicionar planilhas.

 
Postado : 14/01/2016 10:54 am
(@mprudencio)
Posts: 2749
Famed Member
 

abra o vba e vá em ( esta pasta de trabalho )
coloque o código abaixo:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
If ActiveWorkbook.Worksheets.Count = 5 Then 'conte quantas planilhas vc tem e coloque a quantidade mais 1
                                                                      'se vc tem 10 planilhas coloque 11 no lugar do 5
MsgBox "Não foi possivel adicionar uma planilha, fale com o administrador!"
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End If
End Sub

Esse código impede de adicionar planilhas.

Muito boa essa ja vai para meus arquivos.

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.

 
Postado : 14/01/2016 1:06 pm
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

Boa tarde pessoal,

Pesquisando em sites gringos, encontrei uma macro que de certa forma impedi o usuário de renomear as planilhas:

Public flg As String
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
flg = Sh.Name
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name <> flg Then
Sh.Name = flg
End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> flg Then
Sh.Name = flg
End If
End Sub

Está juntamente com a macro que o messiasmbm passou ficaram perfeitas.

Obrigado pela ajuda de todos

 
Postado : 18/01/2016 12:49 pm