Desactivar función Pegar en Excel

18/02/2008 - 11:15 por Daniel Domínguez | Informe spam
Hola. Tengo una hoja excel con validaciones de algunos campos y mi problema
es que estas funcionan cuando el usuario escribe datos en ellos, pero no
cuando copia un valor de otra hoja excel, con lo que me pueden introducir
datos erróneos. Necesitaría saber si hay alguna manera de impedir que se
pueda pegar nada en la hoja excel, o bien si se puede solucionar el tema de
que las validaciones no funcionan cuando pegas datos.

Muchas gracias por adelantado.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
18/02/2008 - 18:12 | Informe spam
hola, Daniel !

... Tengo una hoja... con validaciones de algunos campos y... estas funcionan cuando el usuario escribe datos en ellos
pero no cuando copia un valor de otra hoja excel, con lo que me pueden introducir datos erroneos.
... hay alguna manera de impedir que se pueda pegar nada en la hoja excel
o bien si se puede solucionar el tema de que las validaciones no funcionan cuando pegas datos...



necesitarias usar codigo en los eventos de 'esa' hoja (suponiendo que las macros sean una opcion 'viable') -?-
y la alternativa mas sencilla seria cancelar el evento de copiar/cortar/pegar en cada cambio de seleccion en "esa" hoja (p.e.)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Sub

aunque es probable que no siempre debiera hacerse dicha cancelacion (habra regiones donde si sea permitido) -?-
otra alternativa es que la cancelacion sea solamente cuando en el area de destino existan celdas CON validacion de datos (p.e.)

1) haz un click-secundario sobre la etiqueta (con el nombre) de 'esa' hoja... y selecciona -> ver codigo...
2) copia/pega las siguientes lineas en el modulo de codigo de 'esa' hoja...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Selection, Me.Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then Exit Sub
With Application
If .CutCopyMode = xlCut Or .CutCopyMode = xlCopy Then
.CutCopyMode = False
MsgBox "El rango de destino contiene celdas con validacion de entrada." & vbCr & _
"NO debes sobre-escribir estas reglas de validacion !!!."
End If
End With
End Sub

-> solo asegurate de que NO exista mas de un procedimiento con el nombre de:
-> Private Sub Worksheet_SelectionChange(ByVal Target As Range)

y todavia podria existir el riesgo de que al pegar, el rango inicial no incluya celdas validadas, pero el pegado se extienda a donde si -???-

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Daniel Domínguez
18/02/2008 - 21:38 | Informe spam
Gracias Héctor por tu respuesta, pero no consigo que me funcione. Sigo
podiendo pegar valores de otros excels o txt, a pesar de tener activadas las
macros. Mi problema se solucionaría bloqueando toda la hoja entera contra la
función pegar, y que apareciera un mensaje de error o algo así, pero no se
que evento usar...

"Héctor Miguel" wrote:

hola, Daniel !

> ... Tengo una hoja... con validaciones de algunos campos y... estas funcionan cuando el usuario escribe datos en ellos
> pero no cuando copia un valor de otra hoja excel, con lo que me pueden introducir datos erroneos.
> ... hay alguna manera de impedir que se pueda pegar nada en la hoja excel
> o bien si se puede solucionar el tema de que las validaciones no funcionan cuando pegas datos...

necesitarias usar codigo en los eventos de 'esa' hoja (suponiendo que las macros sean una opcion 'viable') -?-
y la alternativa mas sencilla seria cancelar el evento de copiar/cortar/pegar en cada cambio de seleccion en "esa" hoja (p.e.)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Sub

aunque es probable que no siempre debiera hacerse dicha cancelacion (habra regiones donde si sea permitido) -?-
otra alternativa es que la cancelacion sea solamente cuando en el area de destino existan celdas CON validacion de datos (p.e.)

1) haz un click-secundario sobre la etiqueta (con el nombre) de 'esa' hoja... y selecciona -> ver codigo...
2) copia/pega las siguientes lineas en el modulo de codigo de 'esa' hoja...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Selection, Me.Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then Exit Sub
With Application
If .CutCopyMode = xlCut Or .CutCopyMode = xlCopy Then
.CutCopyMode = False
MsgBox "El rango de destino contiene celdas con validacion de entrada." & vbCr & _
"NO debes sobre-escribir estas reglas de validacion !!!."
End If
End With
End Sub

-> solo asegurate de que NO exista mas de un procedimiento con el nombre de:
-> Private Sub Worksheet_SelectionChange(ByVal Target As Range)

y todavia podria existir el riesgo de que al pegar, el rango inicial no incluya celdas validadas, pero el pegado se extienda a donde si -???-

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
19/02/2008 - 02:49 | Informe spam
hola, Daniel !

... no consigo que me funcione. Sigo podiendo pegar valores de otros excels o txt, a pesar de tener activadas las macros.
Mi problema se solucionaria bloqueando toda la hoja entera contra la funcion pegar
y que apareciera un mensaje de error o algo asi, pero no se que evento usar...



bueno, cuando van saliendo detalles que se habian quedado "en el tintero", es tiempo de ampliar la gama de posibilidades :))
(solo habias comentado entre copiar/pegar dentro del mismo libro, no desde otros Y MENOS desde otras aplicaciones) ;)

para prevenir la "pega" desde otros libros en la misma instancia de excel, usa en el modulo del libro (ThisWorkbook):
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CutCopyMode = False
End Sub

si el "copy" se hizo desde otra aplicacion u otra instancia de excel, ya estamos hablando del portapapeles de windows :-(
revisa los tips para trabajar con este portapapeles en la pagina de Chip Pearson:
-> Working With The Windows Clipboard
http://www.cpearson.com/Excel/clipboard.htm

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ las consultas anteriores __
> ... Tengo una hoja... con validaciones de algunos campos y... estas funcionan cuando el usuario escribe datos en ellos
> pero no cuando copia un valor de otra hoja excel, con lo que me pueden introducir datos erroneos.
> ... hay alguna manera de impedir que se pueda pegar nada en la hoja excel
> o bien si se puede solucionar el tema de que las validaciones no funcionan cuando pegas datos...

necesitarias usar codigo en los eventos de 'esa' hoja (suponiendo que las macros sean una opcion 'viable') -?-
y la alternativa mas sencilla seria cancelar el evento de copiar/cortar/pegar en cada cambio de seleccion en "esa" hoja (p.e.)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Sub

aunque es probable que no siempre debiera hacerse dicha cancelacion (habra regiones donde si sea permitido) -?-
otra alternativa es que la cancelacion sea solamente cuando en el area de destino existan celdas CON validacion de datos (p.e.)

1) haz un click-secundario sobre la etiqueta (con el nombre) de 'esa' hoja... y selecciona -> ver codigo...
2) copia/pega las siguientes lineas en el modulo de codigo de 'esa' hoja...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Selection, Me.Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then Exit Sub
With Application
If .CutCopyMode = xlCut Or .CutCopyMode = xlCopy Then
.CutCopyMode = False
MsgBox "El rango de destino contiene celdas con validacion de entrada." & vbCr & _
"NO debes sobre-escribir estas reglas de validacion !!!."
End If
End With
End Sub

-> solo asegurate de que NO exista mas de un procedimiento con el nombre de:
-> Private Sub Worksheet_SelectionChange(ByVal Target As Range)

y todavia podria existir el riesgo de que al pegar, el rango inicial no incluya celdas validadas, pero el pegado se extienda a donde si -???-
Respuesta Responder a este mensaje
#4 Daniel Domínguez
19/02/2008 - 15:28 | Informe spam
Muchas gracias de nuevo Héctor !!!

Al final lo he solucionado con una combinación de las funciones que me has
comentado más alguna macro para desactivar todos los menús y las teclas de
acceso rápido de excel.

Un saludo

"Héctor Miguel" wrote:

hola, Daniel !

> ... no consigo que me funcione. Sigo podiendo pegar valores de otros excels o txt, a pesar de tener activadas las macros.
> Mi problema se solucionaria bloqueando toda la hoja entera contra la funcion pegar
> y que apareciera un mensaje de error o algo asi, pero no se que evento usar...

bueno, cuando van saliendo detalles que se habian quedado "en el tintero", es tiempo de ampliar la gama de posibilidades :))
(solo habias comentado entre copiar/pegar dentro del mismo libro, no desde otros Y MENOS desde otras aplicaciones) ;)

para prevenir la "pega" desde otros libros en la misma instancia de excel, usa en el modulo del libro (ThisWorkbook):
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CutCopyMode = False
End Sub

si el "copy" se hizo desde otra aplicacion u otra instancia de excel, ya estamos hablando del portapapeles de windows :-(
revisa los tips para trabajar con este portapapeles en la pagina de Chip Pearson:
-> Working With The Windows Clipboard
http://www.cpearson.com/Excel/clipboard.htm

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ las consultas anteriores __
>> > ... Tengo una hoja... con validaciones de algunos campos y... estas funcionan cuando el usuario escribe datos en ellos
>> > pero no cuando copia un valor de otra hoja excel, con lo que me pueden introducir datos erroneos.
>> > ... hay alguna manera de impedir que se pueda pegar nada en la hoja excel
>> > o bien si se puede solucionar el tema de que las validaciones no funcionan cuando pegas datos...
>>
>> necesitarias usar codigo en los eventos de 'esa' hoja (suponiendo que las macros sean una opcion 'viable') -?-
>> y la alternativa mas sencilla seria cancelar el evento de copiar/cortar/pegar en cada cambio de seleccion en "esa" hoja (p.e.)
>>
>> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>> Application.CutCopyMode = False
>> End Sub
>>
>> aunque es probable que no siempre debiera hacerse dicha cancelacion (habra regiones donde si sea permitido) -?-
>> otra alternativa es que la cancelacion sea solamente cuando en el area de destino existan celdas CON validacion de datos (p.e.)
>>
>> 1) haz un click-secundario sobre la etiqueta (con el nombre) de 'esa' hoja... y selecciona -> ver codigo...
>> 2) copia/pega las siguientes lineas en el modulo de codigo de 'esa' hoja...
>> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>> If Intersect(Selection, Me.Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then Exit Sub
>> With Application
>> If .CutCopyMode = xlCut Or .CutCopyMode = xlCopy Then
>> .CutCopyMode = False
>> MsgBox "El rango de destino contiene celdas con validacion de entrada." & vbCr & _
>> "NO debes sobre-escribir estas reglas de validacion !!!."
>> End If
>> End With
>> End Sub
>>
>> -> solo asegurate de que NO exista mas de un procedimiento con el nombre de:
>> -> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>>
>> y todavia podria existir el riesgo de que al pegar, el rango inicial no incluya celdas validadas, pero el pegado se extienda a donde si -???-



Respuesta Responder a este mensaje
#5 RHMartin
18/04/2008 - 16:07 | Informe spam
"Daniel Domínguez" wrote:

Muchas gracias de nuevo Héctor !!!

Al final lo he solucionado con una combinación de las funciones que me has
comentado más alguna macro para desactivar todos los menús y las teclas de
acceso rápido de excel.



Buen día Daniel.

Oye tengo un problema similar para proteger una hoja de excel, me podrías
indicar como desactivaste las teclas de acceso rápiddo (Ctrl-C, Ctrl-V,
Ctrl-X) para evitar que pudieran copiar tu contenido?.
Gracias anticipas por tu atención. Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida