Mais um post voltado à segurança de seus projetos. Ideal para quando você quiser compartilhar uma planilha com alguém, mas tem receio que seus dados sejam copiados. Com o código que aprenderemos o usuário não poderá copiar ou recortar de uma planilha para outra.
Funciona assim: Abra a janela de edição de códigos (atalho alt f11) e dê um clique em "EstaPasta_de_trabalho". Lá vamos colar o seguinte código:
Private Sub Workbook_Activate()
Dim oCtrl As Office.CommandBarControl
Application.OnKey "^{c}", "" 'Desativa o Copiar pelo teclado
Application.OnKey "^{v}", "" 'Desativa o Colar pelo teclado
Application.OnKey "^{x}", "" 'Desativa o Recortar pelo teclado
'Desabilita todos os comandos de Recortar
For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
oCtrl.Enabled = False
Next oCtrl
'Desabilita todos os comandos de Copiar
For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
oCtrl.Enabled = False
Next oCtrl
'Desabilita o colar especial
For Each oCtrl In Application.CommandBars.FindControls(ID:=21437)
oCtrl.Enabled = False
Next oCtrl
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With Application
.CellDragAndDrop = False
.CutCopyMode = False 'limpa a área de transferência
End With
End Sub
Confira como sua tela deverá estar se parecendo neste momento:
Pronto, veja que agora a opção de Recortar, Copiar e Colar não estarão disponíveis quando você usar o botão direito do seu mouse em alguma célula
Com o nosso código também foram bloqueadas as ações através dos atalhos do teclado. Essa parte não estava inclusa na versão original do post e foi adicionada após o comentário bloqueia os atalhos no teclado foi uma contribuição do nosso leitor Rodrigo Castro. Valeu por compartilhar conhecimento conosco, Rodrigo!
Detalhes importantes: Não esqueça de salvar o "documento como modelo habilitado para macro" e de implementar este código que aprendemos em outra aula para fazer com que a execução de macros seja obrigatória, afinal, de nada adiantaria se o usuário usasse a planilha com as macros desativadas, certo?
Não esqueça que você pode fazer algumas pequenas modificações, por exemplo: Não incuir a linha referente ao bloqueio do atalho de "Colar", assim, caso necessário você pode inserir dados na planilha por esta forma mais rápida do que digitar linhas e linhas de conteúdo.
Desfazendo o processo
Muita gente relatou nos comentários que não está conseguindo desfazer o erro, então aqui vai a solução: Troque o código anterior pelo código abaixo e execute-o:
Private Sub Workbook_Activate()
Dim oCtrl As Office.CommandBarControl
Application.OnKey "^{c}", "" 'Desativa o Copiar pelo teclado
Application.OnKey "^{v}", "" 'Desativa o Colar pelo teclado
Application.OnKey "^{x}", "" 'Desativa o Recortar pelo teclado
'Desabilita todos os comandos de Recortar
For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
oCtrl.Enabled = True
Next oCtrl
'Desabilita todos os comandos de Copiar
For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
oCtrl.Enabled = True
Next oCtrl
'Desabilita o colar especial
For Each oCtrl In Application.CommandBars.FindControls(ID:=21437)
oCtrl.Enabled = True
Next oCtrl
Application.CellDragAndDrop = True
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
With Application
.CellDragAndDrop = True
.CutCopyMode = True 'limpa a área de transferência
End With
End Sub
Agora sim.
😕 Poxa, o que podemos melhorar?
😃 Boa, seu feedback foi enviado!
✋ Você já nos enviou um feedback para este texto.