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

Espero que me puedan ayudar con este problemón que tengo.

Resulta que tengo una macro en excel con muchas Columnas que tienen validación de datos. Mi problema viene en que necesito que en mi documento se deshabilite la opción de pegar, necesito que para poder pegar datos, se haga por medio del pegado especial, esto lo necesito para evitar que las personas que van a utilizar esta macro, peguen "Basura", ya que esto es un problema por que la macro va a generar unos documentos que alimentan una base de datos.

Agradecería mucho si me puede dar una buena solución o una pagina en donde me expliquen como puedo lograr esto, pues llevo un buen tiempo buscando esto y no he encontrado nada aun.

2 Respuestas

Respuesta
2

Te mando mi solución.

1º copia esta macro dentro del objeto ThisWorkbook

Private Sub Workbook_Open()
Application.OnKey "^v", "anular"

2º copia esta macro dentro de un módulo

Sub anular()
cancel = True
End Sub

3º Graba el archivo - ciérralo y vuelve a abrirlo. En este momento nadie puede hacer un pegado normal.

No olvides finalizar la consulta

continuación...

Hemos desactivado la pulsación CONTROL V para que nadie pueda hacer un pegado normal.

Lo que tienes que hacer es ocultar el menú de excel para que tampoco puedan hacer el copiado mediante el menu superior.

Muchas gracias Luismodelo por tu respuesta, ya todo va cogiendo color, pero me podrías explicar un poco mas como puedo pegar ese código, lo que pasa es que soy algo novato en estoy, y esto lo necesito para un proyecto pequeño y nada mas....

Muchas Gracias y que pena tanta molestia.

Cuando tengas abierto tu archivo pulsa ALT F11 con esto hemos pasado al módulo de programación de macros.

Ahora en la parte izquierda verás una estructura en árbol de tu archivo y habrá un renglón donde dice ThisWorkbook da doble click encima de esta palabra

Al dar doble click se abrirá una pantalla blanca a la derecha ahí tienes que copiar esto:

Private Sub Workbook_Open()
Application.OnKey "^v", "anular"
end sub

Ahora pulsa en el menú superior de la pantalla en el apartado INSERTAR y elige módulo. En la pantalla que se ha abierto blanca a la derecha copia esto:

Sub anular()
cancel = True
End Sub

Ahora tienes que cerrar tu archivo grabándolo con formato para macros. Después lo abres y ya está preparado para que el usuario no pueda usar el CONTROL V a la hora de pegar.

Recuerda finalizar la consulta

Luismodelo... Eres un MAESTRO.... ya me gane una buena felicitación en la oficina, y voy muy muy bien con mi primer proyecto.

Lo único que me pidieron es también deshabilitar el Click Derecho pegar, con esto quedaría solamente la opción de PEGADO ESPECIAL, como les comente anteriormente esto lo necesito por que la macro genera un documento que alimenta una base de datos, y esto es para cargar descuentos comerciales a nivel Colombia de una tienda multinacional, asi que es por esto que sigo en la búsqueda para que mi macro quede lo mas perfecta posibles

y como siempre MUCHAS MUCHAS GRACIAS

LUISMODELO ERES UN MAESTRO, GRACIAS MUCHAS GRACIAS...

Pega esta macro dentro del objeto ThisWorkbook como ha te he enseñado.

Ahora ya no funciona el click derecho del ratón

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel = True
End Sub

no olvides finalizar la consulta

COMPARTO LA SOLUCIÓN FINAL A TODOS MIS PROBLEMAS POR SI ALGUIEN LA NECESITA....

====================

This Workbook
===============
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

MODULE 1

======================
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
'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"
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

NUY AGRADECIDO POR TODA LA AYUDA QUE ME PRESTO LUISMODELO, REALMENTE ES UN GENIO.

CREO QUE SEGUIRÉ UTILIZANDO ESTA WEB A MENUDO, ES LA MEJOR RESPUESTA A LOS PROBLEMAS.

Respuesta

¿Si solo quiero proteger de pegar solo en una columna se puede?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas