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 !

... necesito bloquear la funcion de copiar y cortar porquetengo un archivo lleno de formulas y macros
y los usuarios deben ingresar la informacion en distintas hojas y al cortarla y pegarla ...
las formulas quedan extranas en esa hoja pero las demas hojas no realizan la misma modificacion...



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