Como deshabilitar las opciones de Copiar, Cortar, Pegar, Imprimir y Guardar Como en hojas de Excel con VBA

Tengo un archivo de Excel llamado "Ventas" y de dicho archivo tengo una hoja llamada "COTIZADOR".

Me gustaria que dicho archivo permita su manipulación en cuanto a ingresar datos en las celdas (eso ya esta listo) pero que no permita copiar, cortar, pegar o imprimir o guardar como, al usuario que este utilizando el archivo.

Tengo entendido que eso se hace con instrucciones VBA que se colocan en el area de ThisWorkbook pero lo que no se es como son esas instrucciones.

Respuesta
1

Vamos paso a paso.

1. Para que las macros funcionen deben abrir el libro habilitando las macros. Revisa la siguiente respuesta:

Macro que ya habilite macros en libro de excel

2. Después de que tu libro tenga lo anterior. Pasamos que no permita Imprimir o Guardar-como.

3. Por último el código para que no permita copiar, cortar, pegar (incluso este lo puedes buscar en la red, hay mucho sobre eso)

Avísame cuanto tu libro ya tenga el primer paso.

El archivo ya esta habilitado para macros inclusive ya tiene una macro que es sencilla que es de limpiar el área de trabajo.

En cuanto al código de deshabilitar las opciones que te comenté encontré estas en internet y las puse pero no me funcionarion.

Private Sub Workbook_Open()
Application.OnKey «^{c}», «» ‘anula copiar
Application.OnKey «^{x}», «» ‘anula cortar
Application.OnKey «^{v}», «» ‘anula pegar
End Sub
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel = True
End Sub

Entonces por eso acudo a ti para que me ayudes. Me salen incluso en rojo cuando las puse.

Prueba así:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Cancel = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  Cancel = True
End Sub
Private Sub Workbook_Open()
  Application.OnKey "^{c}", "" 'anula copiar
  Application.OnKey "^{x}", "" 'anula cortar
  Application.OnKey "^{v}", "" 'anula pegar
End Sub
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  Cancel = True
End Sub

Pues deshabilita el click derecho y eso esta bien pero si hago CONTROL + C igual me permite hacer copia de los datos resaltados y eso es lo que no quiero que permita.
Igual permite el CONTROL + V

Estaban mal tus instrucciones desde un inicio:

Application.OnKey «^{c}», «» ‘anula copiar

Por eso te pedí que hicieras los pasos 1, 2 y luego el 3, pero te adelantaste al 3.


Prueba lo siguiente:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Cancel = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  Cancel = True
End Sub
Private Sub Workbook_Open()
  Application.OnKey "^c", "" 'anula copiar
  Application.OnKey "^x", "" 'anula cortar
  Application.OnKey "^v", "" 'anula pegar
End Sub
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  Cancel = True
End Sub
Private Sub Workbook_Activate()
  Application.CutCopyMode = False
  Application.OnKey "^c", ""
  Application.OnKey "^x", ""
  Application.OnKey "^v", ""
  Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_Deactivate()
  Application.CellDragAndDrop = True
  Application.OnKey "^c"
  Application.OnKey "^x"
  Application.OnKey "^v"
  Application.CutCopyMode = False
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
  Application.CutCopyMode = False
  Application.OnKey "^c", ""
  Application.OnKey "^x", ""
  Application.OnKey "^v", ""
  Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
  Application.CellDragAndDrop = True
  Application.OnKey "^c"
  Application.OnKey "^x"
  Application.OnKey "^v"
  Application.CutCopyMode = False
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  Application.CutCopyMode = False
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
  Application.OnKey "^c", ""
  Application.OnKey "^x", ""
  Application.OnKey "^v", ""
  Application.CellDragAndDrop = False
  Application.CutCopyMode = False
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
  Application.CutCopyMode = False
End Sub

Hago las siguientes 2 preguntas por si de pronto hay solución para ellas:
1. Con estas nuevas instrucciones me di uenta que ahora si, si voy a copiar una celda, la señalo y le doy CONTROL + C lo permite (me doy cuenta de eso por que el área que señalo para copiar se pone con el típico trazado de líneas a su alrededor), lo que si no permite es el CONTROL + V en el mismo archivo de Excel, pero si por ejemplo, me voy al programa PAINT o correo electrónico o whatsapp web y coloco CONTROL + V, me pega exactamemte lo que copie de Excel. Entonces mi pregunta es la siguiente: Contra eso no hay nada que hacer, o la instrucción que deshabilita CONTROL + C no esta funcionado, ¿y eso no debería estar pasando?

2. Creo que en las instrucciones hay una restricción de guardar el archivo, entonces lo otro que me esta sucediendo es que cuando y coloco las instrucciones VBA y voy a guardar el archivo este no me deja y por lo tanto me tocaría cada vez que abro el archivo volver a copiar las instrucciones cada vez. ¿Esto cómo se solucionaría?

Puedes proteger la hoja y deshabilitar la selección de celdas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas