Instrucción VBA en hoja para impredir usar la función de PEGAR

H.o.l.a  D.a.n.t.e

Quería saber si por casualidad en el evento de una hoja, se pueda colocar alguna instrucción en VBA en donde si el usuario en dicha hoja quiere aplicar la función "Pegar" en cualquiera de sus alternativas y/o oprimiendo las teclas "Control V" salga un msgbox que le informe que la función pegar para dicha hoja esta inhabilitado.

2 respuestas

Respuesta
2

Para pegar tienes varias opciones, con control + v, Shift + Insert, con el botón derecho del mouse, y desde el menú, existe todo un menú para pegar:

Lo que hay que hacer es deshabilitar todas esas opciones, lo único que he encontrado son algunas soluciones parciales para deshabilitar las teclas y el pegado especial. Pero todavía queda todo el menú de pegar.

Pon esto en los eventos de thisworkbook

Option Explicit
Private Sub Workbook_Activate()
Call ToggleCutCopyAndPaste(False)
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call ToggleCutCopyAndPaste(True)
End Sub
Private Sub Workbook_Deactivate()
Call ToggleCutCopyAndPaste(True)
End Sub
Private Sub Workbook_Open()
Call ToggleCutCopyAndPaste(False)
End Sub

Pon lo siguiente en un módulo:

Option Explicit
Sub ToggleCutCopyAndPaste(Allow As Boolean)
'Activate/deactivate cut, copy, paste and pastespecial menu items
Call EnableMenuItem(21, Allow) ' cut
Call EnableMenuItem(19, Allow) ' copy
Call EnableMenuItem(22, Allow) ' paste
Call EnableMenuItem(755, Allow) ' pastespecial
Call EnableMenuItem(2787, Allow) ' pastespecial
Call EnableMenuItem(30003, Allow) ' pastespecial
'Activate/deactivate drag and drop ability
Application.CellDragAndDrop = Allow
'Activate/deactivate cut, copy, paste and pastespecial shortcut keys
With Application
Select Case Allow
Case Is = False
.OnKey "^c", "CutCopyPasteDisabled"
.OnKey "^v", "CutCopyPasteDisabled"
.OnKey "^x", "CutCopyPasteDisabled"
.OnKey "+{DEL}", "CutCopyPasteDisabled"
.OnKey "^{INSERT}", "CutCopyPasteDisabled"
.OnKey "+{INSERT}", "CutCopyPasteDisabled"
Case Is = True
.OnKey "^c"
.OnKey "^v"
.OnKey "^x"
.OnKey "+{DEL}"
.OnKey "^{INSERT}"
End Select
End With
End Sub
Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
'Activate/Deactivate specific menu item
Dim cBar As CommandBar
Dim cBarCtrl As CommandBarControl
For Each cBar In Application.CommandBars
If cBar.Name <> "Clipboard" Then
Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
End If
Next
End Sub
Sub CutCopyPasteDisabled()
'Inform user that the functions have been disabled
MsgBox "Sorry! Cutting, copying and pasting have been disabled in this workbook!"
End Sub


Pero no encuentro cómo deshabilitar el menú Pegar. Entonces lo que te recomiendo es que protejas la hoja, de esa forma, puedes seleccionar cuáles celdas serán modificadas y cuáles no.


Sal u dos

Como complemento a lo anterior puedes deshabilitar todo el menú:

Agrega la siguiente línea en la macro del módulo:

ExecuteExcel4Macro ("show.toolbar(""ribbon"", 0)")

Para mostrar nuevamente el menú

ExecuteExcel4Macro ("show.toolbar(""ribbon"", 1)")

sal u dos

Respuesta
1

Miguel Angel: Mirate éste enlace, que creo te servirá.

Deshabilitar pegar en Excel. (Solo usar pegado especial).

Un saludo >> Jacinto

Pero necesito que impida cualquier tipo de pagado.

Miguel Angel: He viso que respondía Dante, que es un gran especialista en éste tema. Seguro que aporta la mejor solución.

Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas