Impedir copia

27/09/2003 - 01:09 por JFM | Informe spam
Hola a todos, estoy desarrollando una aplicación en la que tengo dos hojas
(hoja1 y hoja2) dentro de un libro que sirven de modelo para irlas copiando
y quiero mediante código impedir que las hojas duplicadas -hoja1(2) y
hojas2(2) - se puedan copiar.

Agradecería cualquier ayuda.
Un saludo, Javier.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/09/2003 - 10:20 | Informe spam
Hola, Javier !

... (hoja1 y hoja2) ... modelo para irlas copiando ... impedir que las hojas duplicadas -hoja1(2) ... - se puedan copiar.



==> el comando [mover o copiar hoja...] tiene una 'id' [848] 'dentro' de los controles de 'Application.CommandBars'
podrias 'inhabilitarlo' si el usuario selecciona cualquier hoja [fuera de las hojas 'base'], para lo cual 'tendrias que'...
1) usar como referencia los 'nombres-codigo' de las hojas 'base' [por si les cambian de nombre en las 'pestañas']
si 'observas' [en la ventana del proyecto en el Editor de VBA], 'veras' dos nombres (?) para cada hoja, p.e. Hoja1(Hoja1)
el primer nombre, es el 'codename', y el segundo [entre parentesis] es la propiedad Name [el nombre de la 'pestaña']
=> [en la ventana de propiedades, veras la propiedad -> (Name), que 'aplica' al 'codename'] < podrias cambiar el 'codename' del objeto p.e. 'de' Hoja1 'a' Base1, Base2, etc.
2) usar el evento '_SheetActivate' del modulo de codigo del libro ['ThisWorkbook'] para 'detectar' la hoja seleccionada
3) [solo 'para variar'] algunos 'pros' y 'contras' [decide tu 'cual es cual'] ;)
a) 'inhabilitar' el control NO 'impide' que se use '{Ctrl}+Arrastrar' [en la pestaña del nombre] para copiar la hoja
'duplicada'
b) para 'brincar' lo anterior tendrias que 'esconder' [tambien] las 'etiquetas' con los nombres de las hojas, ademas de...
c) 'inhabilitar' [tambien] el comando 'opciones -> personalizar' [Id:R2] =>para que NO las 'vuelva a mostrar'< d) con 'todo esto', la UNICA opcion ['practica'] del usuario para 'saltar' de hoja es: {Ctrl}+{RePag} -o- {Ctrl}+{AvPag}
:((
[si se 'encuentra' en una hoja 'duplicada' que NO 'presentaria' su 'pestaña' con el nombre]
e) AUN ASI le quedaria un 'recurso final' al usuario [si 'lo descubre' y suponiendo que 'NO sabe' de codigo]:
seleccionar [con el mouse] una hoja 'duplicada' [mientras 'la pueda ver'] y SIN SOLTAR, usar el {Ctrl}+Arrastrar'
:((((

si 'decides' seguir adelante... copia las siguientes lineas => y OJO con lo de los 'codenames' <= ;)
en el modulo de codigo del libro 'ThisWorkbook' ==Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.CodeName = "Base1" Or Sh.CodeName = "Base2" Then
ChecarComando 848, True
ChecarComando 522, True
Else
ChecarComando 848, False
ChecarComando 522, False
End If
End Sub
Function ChecarComando(ByVal Boton As Integer, ByVal Disponible As Boolean)
Dim Barra As CommandBar, Comando As CommandBarControl
On Error Resume Next
For Each Barra In Application.CommandBars
Set Comando = Barra.FindControl(Id:=Boton, Recursive:=True)
If Not Comando Is Nothing Then Comando.Enabled = Disponible
Next
ActiveWindow.DisplayWorkbookTabs = Disponible
Set Comando = Nothing
End Function
_______
Saludos,
Héctor.
MS-MVP
Respuesta Responder a este mensaje
#2 JFM
30/09/2003 - 22:43 | Informe spam
Ante todo gracias Hector por tu interés y por la explicación tan detallada
que me has proporcionado, cuando lo tenga comprobado e implementado ya te
contaré.

Gracias, Javier.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida