- 12 Nov 2020 às 17:47
#60464
Pessoal, eu inseri uma macro que bloqueia a ação de copiar e colar dentro da planilha e eu precisaria de uma outra macro que desfizesse esse efeito. Eu não tenho conhecimento em VBA e eu encontrei essa macro de bloqueio na internet. Eles também deixaram liberada uma macro que desfaz o bloqueio, porém quando eu aplico essa macro de desbloqueio no lugar da anterior, ela não está funcionando.
Segue a macro de bloqueio:
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 = False 'limpa a área de transferência
End With
End Sub
E a macro de desbloqueio:
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
Agradeço muito se alguem conseguir uma solução. Vou deixar a planilha em anexo e a senha para acessar o VBA é "131077". Eu deixei a planilha salva com a macro de bloqueio atuando.
Segue a macro de bloqueio:
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 = False 'limpa a área de transferência
End With
End Sub
E a macro de desbloqueio:
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
Agradeço muito se alguem conseguir uma solução. Vou deixar a planilha em anexo e a senha para acessar o VBA é "131077". Eu deixei a planilha salva com a macro de bloqueio atuando.