Formulario no cierra con "X" pero...

21/01/2008 - 08:16 por GRIEGO59 | Informe spam
Hola!
Tengo un formulario "Ventas" que no se cierra con "X", sino con un botón
"cerrar".
Con estos codigos que no se exactamente como funcionan:
Option Explicit
Private Sub cmdCerrar_Click()
Unload Me 'para cerrar el formulario
ActiveWorkbook.Save 'para grabar antes de cerrar el libro
ActiveWorkbook.Close 'para cerrar el libro al cerrar el formulario
End Sub

Private Sub UserForm_QueryClose(cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox "Use el botón CERRAR del formulario", vbInformation, " Botón No
Disponible "
cancel = 1
CloseMode = 1
End If
End Sub

y en un módulo:
Sub Auto_open()
Load Clientes
Ventas.Show
End Sub

Me pareció bien que el formulario se activa automáticamente al abrir el
libro y al cerrar el formulario, se cierra tambien el libro de excel, de esta
forma el usuario tiene menos oportunidad de distraerse con la información de
las hojas.

Lo único malo es que al abrir el libro si no se habilitan las macros el
usuario tiene acceso a la información del libro, y si se habilitaran las
macros automáticamente al abrir el libro, entonces como podría luego yo tener
acceso a la información del libro.

Todas las hojas están protegidas y se protegen y desprotegen según las macros.

Si oculto las hojas, luego pueden mostrarse libremente por el usuario.

Darío

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
22/01/2008 - 06:17 | Informe spam
hola, Darío !

__ 1 __
Tengo un formulario "Ventas" que no se cierra con "X", sino con un boton "cerrar"...
... el formulario se activa... al abrir el libro y al cerrar el formulario, se cierra tambien el libro
... de esta forma el usuario tiene menos oportunidad de distraerse con la informacion de las hojas.
Lo unico malo es que al abrir el libro si no se habilitan las macros el usuario tiene acceso a la informacion del libro


__ 2 __
y si se habilitaran las macros... al abrir el libro, entonces como podria... yo tener acceso a la informacion del libro.


__ 3 __
Todas las hojas estan protegidas y se protegen y desprotegen segun las macros.
Si oculto las hojas, luego pueden mostrarse libremente por el usuario.



1) lo usual (y mas recomendado) en estos casos es tener una "primera hoja" como presentacion (en caso de "no macros")
que se oculte en el evento '_open' de tu libro y quede a la vista la hoja que consideres apropiada (ademas)...
es obligado bloquear la visualizacion de tu proyecto de macros (vba) y asignarle una clave (de esta forma)...

2) puedes mantener pulsada la tecla {shift/mayusc} al momento de aprobar el uso de macros y hasta que se abra tu libro
este paso omite la ejecucion de macros y eventos de apertura, con lo que el formulario no debera aparecer
y ya que tu conoces la clave de tu proyecto de macros... ;)

3) para que las hojas ocultas queden "fuera del alcance" de los usuarios, procura ocultarlas (por codigo)
-> estableciendo su propiedad "Visible" como xlSheetVeryHidden (no aparecen en los menus para mostrar hoajs ocultas)
(obviamente) no es infalible... (pero se espera que pueda desesperanzar a usuarios "comunes" y quiza medio-avanzados)...

OJO: asegurate tambien de que al guardar el libro ocultas todas las hojas y solo queda visible "la de pantalla"
(para el siguiente open) y de que el usuario no pueda hacer acciones de guardar o guardar como (por si las dudas)

saludos,
hector.
Respuesta Responder a este mensaje
#2 GRIEGO59
28/01/2008 - 05:23 | Informe spam
Hola Hector Miguel!
Mil gracias por tu ayuda.


1) lo usual (y mas recomendado) en estos casos es tener una "primera hoja" como presentacion (en caso de "no macros")
que se oculte en el evento '_open' de tu libro y quede a la vista la hoja que consideres apropiada (ademas)...
es obligado bloquear la visualizacion de tu proyecto de macros (vba) y asignarle una clave (de esta forma)...



Podrías decirme, por favor, como haría para/que significa que la hoja de
presentación se oculte en el evento "open"?


OJO: asegurate tambien de que al guardar el libro ocultas todas las hojas y solo queda visible "la de pantalla"
(para el siguiente open) y de que el usuario no pueda hacer acciones de guardar o guardar como (por si las dudas)



Podrías decirme, por favor, como evitar que el usuario pueda hacer estas
acciones de guardar o guardar como, y si se pueden evitar otras acciones del
menú herramientas-opciones como listas personalizadas, ocultar y mostrar
barras de desplazamiento horizontal y vertical, encabezados de filas y
columnas?

Saludos desde Venezuela
Darío
Respuesta Responder a este mensaje
#3 Ivan
28/01/2008 - 11:49 | Informe spam
Podrías decirme, por favor, como evitar que el usuario pueda hacer estas
acciones de guardar o guardar como, y si se pueden evitar  otras acciones del
menú herramientas-opciones como listas personalizadas, ocultar y mostrar
barras de desplazamiento horizontal y vertical, encabezados de filas y
columnas?




hola Darío

mientras vuelve Hector, que por su 'infrecuente infrecuencia' me da la
impresion debe de andar liadillo, mira a ver si te vale algo de esto,
que ademas en gran medida es obra suya,

Y al menos te ira sonando cuando el vuelva=>

http://tinyurl.com/3asmtn

http://tinyurl.com/2ugcbc

espero te ayude

un saludo
Ivan
Respuesta Responder a este mensaje
#4 GRIEGO59
28/01/2008 - 12:54 | Informe spam
Gracias por tu ayuda Ivan

hola Darío
mientras vuelve Hector, que por su 'infrecuente infrecuencia' me da la impresion debe de andar liadillo, mira a ver si te vale algo de esto,
que ademas en gran medida es obra suya,
Y al menos te ira sonando cuando el vuelva=>
http://tinyurl.com/3asmtn
http://tinyurl.com/2ugcbc
espero te ayude



De las alternativas presentadas, la que mejor se adapta a mi ignorancia es
esta:

Complementariamente (y para NO "perjudicar" la interacción con el usuario)
puedes usar los eventos "WindowActivate" y
"WindowDeactivate" del objeto "ThisWorkbook" para que, los comandos queden
inhabilitados "solamente" cuando la ventana
"activa" sea "el libro".

Private Sub Workbook_WindowActivate(ByVal Wn As Window)

DesHabilitarComandos

End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)

ReHabilitarComandos

End Sub

Yo copié el código y lo pegué en la hoja de código que se abre al hacer
click en ThisWorkbook.
Pero al abrir el libro me dá este:

"Error de compilación, no seha definido sub o function"

y sobre salta esta parte del código:

Private Sub Workbook_WindowActivate(ByVal Wn As Window)

DesHabilitarComandos

Supongo que estoy haciendo algo mal. Podrías decirme, por favor, que estoy
haciendo mal?

Saludos
Darío
Respuesta Responder a este mensaje
#5 GRIEGO59
28/01/2008 - 14:08 | Informe spam
hola Darío

mientras vuelve Hector, que por su 'infrecuente infrecuencia' me da la
impresion debe de andar liadillo, mira a ver si te vale algo de esto,
que ademas en gran medida es obra suya,

Y al menos te ira sonando cuando el vuelva=>

http://tinyurl.com/3asmtn

http://tinyurl.com/2ugcbc



También me gustó los códigos para evitar copias no autorizadas:

'Muestra el serial del disco duro para escribirlo en el código en ThisWorkBook
Sub ShowSerial()
Dim fs, d
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName("c:\")))
MsgBox d.serialnumber
End Sub


'En ThisWorkBook Cierra el libro si el serial no coincide
Private Sub Workbook_Open()
Dim fs, d
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName("c:\")))
If d.serialnumber <> -455497706 Then:
End
Application.Quit
End Sub

Pero siempre se cierra mi libro. No sé si tiene que ver el signo (-) delante
del serial.
Ya intenté sin escribir el (-) y usando el (-) del panel numérico y del
alfabético del teclado.

Que estoy haciendo mal?

Saludos

Darío
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida