bloquear Cortar o trasladar

09/11/2007 - 19:48 por Alejandro Cristi Elgueta | Informe spam
Hector te cuento que necesito bloquear la funcion de copiar y cortar porque
tengo un archivo lleno de formulas y macros y los usuarios deben ingresar la
informacion en distintas hojas y al cortarla y pegarla en filas de mas
arriba las formulas quedan extrañas en esa hoja pero las demas hojas no
realizan la misma modificacion. seria por medio de una macro?


"Héctor Miguel" <NOhemiordiSPAM@PLShotmail.com> escribió en el mensaje
news:OFbCcGPIIHA.1164@TK2MSFTNGP02.phx.gbl...

hola, Alejandro !


Como se puede deshabilitar el comando "cortar" y "trasladar"



las intenciones o necesidades de prohibir/permitir que los usuarios puedan
(o no) hacer "tales o cuales" cosas...
(generalmente) requieren de una descripcion mas detallada de los
como/donde/cuando/por que/etc.
o sea, que es lo que realmente necesitas controlar (y de ser posible...
"+/- exactamente") :))

saludos,
hector.

 

Leer las respuestas

#1 Héctor Miguel
09/11/2007 - 21:34 | Informe spam
hola, Alejandro !

Mostrar la cita
hay varias alternativas para evitar (hasta un cierto grado) el uso de Copiar_Cortar_Pegar
ademas de los botones, estan los atajos {Ctr}+C, {Ctrl}+X, {Ctrl}+V, {Mayusc}+{Insert} (etc.)
... inclusive, se podrian crear al vuelo mas botones (si ya los tenias bloqueados) :((

te paso un adelanto en seguida y... si cualquier duda (o informacion adicional)... comentas?
saludos,
hector.

(en los modulos de eventos de hojas y libro p.e.)
en el evento _selectionchange (de la/s hoja/s)
en los eventos _activate y _deactivate (de la/s hoja/s y del libro)

-> la mas sencilla seria utilizar -> Application.CutCopyMode = False <-
-> otra seria el uso de los mismos eventos con apoyo de codigo +/- como el siguiente:
-> en un modulo de codigo normal (nota: el CXV es solo por las letras de los atajos)

' macro para cancelar el uso de cualquier boton y atajos de copiado/pegado
Sub CXV_No()
CXV_Si_No 19, False: CXV_Si_No 21, False
CXV_Si_No 22, False: CXV_Si_No 755, False
With Application
.OnKey "^x", "": .OnKey "^c", "": .OnKey "^v", "": .OnKey "+{Del}", "": .OnKey "+{Insert}", ""
.EditDirectlyInCell = False: .CellDragAndDrop = False
End With: CommandBars("ToolBar List").Enabled = False
End Sub

' macro para liberar el uso de los botones y atajos de copiado/pegado
Sub CXV_Si()
CXV_Si_No 19, True: CXV_Si_No 21, True
CXV_Si_No 22, True: CXV_Si_No 755, True
With Application
.OnKey "^x": .OnKey "^c": .OnKey "^v": .OnKey "+{Del}": .OnKey "+{Insert}"
.EditDirectlyInCell = True: .CellDragAndDrop = True
End With: CommandBars("ToolBar List").Enabled = True
End Sub

' funcion auxiliar para cancelar/liberar el uso de los comandos
Private Function CXV_Si_No(Num As Integer, Si_No As Boolean)
Dim Barra As CommandBar, Boton As CommandBarControl
On Error Resume Next
For Each Barra In Application.CommandBars
Set Boton = Barra.FindControl(Id:=Num, Recursive:=True)
If Not Boton Is Nothing Then Boton.Enabled = Si_No
Next: Set Boton = Nothing
End Function

nota: las dos opciones anteriores podrian presentar la siguiente falla:
que pasa si el usuario abre el libro SIN permiso de usar macros?

Preguntas similares