Buen dia Paco!
Ya tenia rato de no molestarte :-P
Ahora nuevamente necesito de tu valiosa ayuda: resulta que yo constantemente estoy generando archivos para que alimenten los gestores y demas compañeros, lo que pasa es que la mayoria conoce muy poco o casi nada de excel, mi problema es que aunque bloquee los archivos y permita nada mas la edicion de ciertas celdas ellos le dan copiar y pegar y se pierden por ejemplo las validaciones de datos o bien los formatos y me daña la busqueda.
La pregunta entonces es: Existe alguna forma de que los ususarios no puedan pegar, o mejor aun, pegar unicamente valores?
Como siempre gracias por tu valiosa ayuda!
Joseph
Que yo sepa no se puede impedir que peguen lo que hayan copiado en otro sitio
Aunque pongas validación de datos, puedes pegar cualquier cosa que incumpla la validación, así que no soluciona tu problema (sólo puedes marcar en rojo si se incumple, pero puedes no marcarlo).
Tendrás que preparar tus hojas para que las búsquedas no dependan del formato.
Puedes utilizar una macro para que desactive el modo copiar (ese que rodea con una línea discontínua lo que has copiado) mira este ejemplo, pero sólo funcionará si lo que has copiado lo has copiado en el mismo libro de Excel, si copias en otro libro y vienes aquí a pegarlo, te deja mientras no cambies de celda (que es el evento donde han puesto el código). Tampoco impide que copien en otro programa y luego entren a Excel a pegar, pero bueno, algo es algo.
Por supuesto, sólo funcionará si las macros están habilitadas, y por defecto no lo están, porque supongo que tus usuarios que no saben mucho Excel no habrán configurado como ubicación de seguridad para las macros la carpeta donde van a guardar tu archivo.
------
Ya sé Excel, pero necesito más ahora en pdf
------
Ya sé Excel, pero necesito más.
Pega esta macro en ThisWorkBook
Private Sub Workbook_SheetActivate(ByVal Sh As Object) ' Macro que no permite copiar y pegar en las celdas
Application.CutCopyMode = False
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = True
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CutCopyMode = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CutCopyMode = True
End Sub