Evento del objeto application

3 envíos / 0 nuevos
Último envío
Jesus S.P.
Imagen de Jesus S.P.
Offline
última acción: Hace 4 años 7 meses
alta: 20/01/2019 - 16:41
Puntos: 80
Evento del objeto application

Hola buenos días, me ha surgido una duda que me lleva de cabeza desde hace algún tiempo y no soy capaz ni de que funcione lo que ya tengo hecho ni de encontrar otra forma de hacerlo, me explicaré:

Tengo un libro con macros, como es para el uso de muchos usuarios, unos 25, lo e capado prácticamente todo y e dejado que solo las funcionalidades necesarias, pero hay una cosa que no e conseguido aún, no e conseguido encontrar la forma de hacer que si el libro se abre en vista protegida, es decir sin las macros habilitadas, e cierre automaticamente despues de mostrar un msgbox diciendo que hay que tenerlas activadas para poder abrirlo, y así que se ejecuten las macros antes de poder ver la información.

Estoy probando con el evento del objeto application "ProtectedViewWindowActivate" para ver si al abrirse el libro en vista protegida, hace lo que necesito, pero no me va, no se si es que no puede hacerse como lo hago o que lo e estructurado mal, en principio e creado un modulo de clase y luego en otro modulo lo e conectado al objeto application, eso lo e visto en varios tutoriales y creo que lo tengo bien implementado, os pongo el codigo a ver que os parece:

Este es el modulo de clase:

Option Explicit
'' Creamos un objeto aplication con eventos para usar los procedimientos
Public WithEvents ExcelAppEvents As Application

Private Sub ExcelAppEvents_ProtectedViewWindowActivate(ByVal Pvw As ProtectedViewWindow)

' Si se abre el libro en modo protegido, sin macros activadas,
' se muestra el mensaje y se cierra la aplicación de esta forma no puede saltarse la validación de usuarios antes de ver el libro
   
    MsgBox "No puede abrir este libro si no tiene antes las macros activadas" & vbNewLine _
    & " Abra un archivo nuevo de excel, diríjase a la pestaña ARCHIVO --> OPCIONES --> CENTRO DE CONFIANZA " _
    & vbNewLine & "--> CONFIGURAR CENTRO DE CONFIANZA --> UBICACIONES DE CONFIANZA " & _
    "Luego marque la casilla inferior PERMITIR UBICACIONES DE CONFIANZA QUE ESTÉN EN RED " & vbNewLine & _
    "AGREGAR NUEVA UBICACIÓN y escoja la carpeta donde se encuentra el archivo", vbCritical

    Application.Quit
   
End Sub

 

Este es el otro modulo:

Option Private Module
Option Explicit
Public ApplicationClass As New ApplicationEventClass

Sub ConnectEventHandler()
   Set ApplicationClass.ExcelAppEvents = Application
End Sub

No se si voy por buen camino o si estoy totalmente equivocado, agradezco de antemano vuestra ayuda, un saludo.

PD. E seguido los pasos que pone aquí pero después creo que estoy haciendo algo mal..

https://docs.microsoft.com/es-es/office/vba/excel/concepts/events-worksh...

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 semana 20 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Si las macros no están

Si las macros no están habilitadas, no vas a poder hacer nada.

Lo primero para que interprete cualquier cosa que tengas en tu código VBA es que las macros estén habilitadas. Es la medida de protección básica de Office contra la ejecución de código no deseado.

Así que tendrás que pedir al usuario que habilite las macros.

Muéstrale algo que le interese y que no funcione a no ser que habilite las macros, por ejemplo oculta todo el contenido del libro y muestra una página que informe de que las macros deben habilitarse para poder acceder. En la macro de apertura oculta esta página y muestra todas las demás. Y en el evento de antes de cerrar el libro vuelve a ocultarlas.

Así si se abre sin macros el contenido estará oculto

El usuario medio no va a investigar mucho tratando de averiguar si está todo oculto o no, simplemente dará al botón de habilitar el contenido.

 

------
Ya sé Excel, pero necesito más.

Jesus S.P.
Imagen de Jesus S.P.
Offline
última acción: Hace 4 años 7 meses
alta: 20/01/2019 - 16:41
Puntos: 80
Muchas gracias, lo entiendo,

Muchas gracias, lo entiendo, es lo que pensaba, pero al ver este evento pensé que funcionaría, pero es logico.

Lo que no entiendo, entonces que fin tiene este evento, si es para recoger los eventos de las hojas protegidas, y en las hojas protegidas no se activan las macros, no entiendo el fin