Cómo forzar al usuario a habilitar las macros en Excel
Hola, lo que les quiero comentar es una se esas siatuaciones que pasan de vez en cuando. Uno crea un
dashboard muy práctico y bueno para la empresa, pero recibe una llamada de alguien de otro departamento
diciendo que el dashboard no les funciona. Después de investigar un poquito, te das cuenta de que la
principal razón del porqué no funciona es porque no han habilitado las macros.
Para utilizar cualquier macro en Excel, los usuarios deben "Habilitar" las macros. Es decir, tienen que dar
permiso a Excel para utilizar macros de ejecución. Se puede hacer esto haciendo clic en la advertencia de
seguridad que aparece por encima de la barra de fórmulas.
La conclusión es que podemos escribir todas las mejores macros en el mundo, pero nunca se usarán a
menos que los usuarios "Habiliten las macros". Esto plantea la pregunta de si se puede obligar a los usuarios
a habilitar las macros? La respuesta es sí - con un poco de engaño.
La idea es relativamente simple. Se crea una hoja llamada algo así como "INICIO". En esa situación, no hay
nada más que una simple advertencia indicando que las macros deben estar habilitadas.
A continuación, se ocultan todas las hojas del libro de trabajo a excepción de la hoja que hemos llamado
"INICIO". Y después se escribe una macro sencilla que muestre todas las hojas cuando se abra el libro.
.
En este punto, cuando se abre el libro, Excel pedirá al usuario que han de habilitar las macros. Los usuarios
se verán obligados a hacerlo porque lo único que van a ver es la hoja de "INICIO" ya que las otras hojas
estarán ocultas!
Con el fin de hacer este trabajo, lo que realmente necesitamos son dos macros: una macro que oculta todas
las hojas, menos la hoja "INICIO" cuando el libro se cierra y otra macro que muestra todas, menos la hoja de
"INICIO" cuando se abre el libro.
.
En primer lugar, veamos las acciones que deben ocurrir cuando el libro se cierra.
1. Active el Editor de Visual Basic presionando ALT + F11 en el teclado
2. En la ventana de proyecto, encuentra tu proyecto / nombre del libro y hacemos clic en el signo (-) con el fin
de ver todas las hojas.
3. Hacemos clic en ThisWorkbook.
4. Seleccione el Workbook_BeforeClose en el menú desplegable Evento.
5. Ahora pegamos el siguiente código:
Paso 1: En primer lugar, declaramos un objeto llamado ws. Esto creará un contenedor de memoria para cada
hoja de trabajo exista en el libro.
Paso 2: En el segundo paso, nos aseguramos que la hoja "INICIO" es visible.
Paso 3: En el tercer paso, empezamos el bucle, diciéndole a Excel que queremos evaluar todas las hojas de
trabajo en este libro.
Paso 4: En este paso simplemente se compara el nombre de la hoja "INICIO" con la hoja que se está
actualmente en el bucle. Esto asegurará que las acciones que vienen a continuación se aplican a todas las
hojas excepto a la hoja de "INICIO".
Paso 5: Si los nombres de las hojas son diferentes, escondemos la hoja mediante la propiedad xlVeryHidden.
Esta propiedad no sólo oculta la hoja, pero también evita que el usuario la muestre manualmente.
Paso 6: En el paso seis todavía dentro del bucle debemos obtener la siguiente hoja.
Paso 7: Una vez que se evalúan todas las hojas, la macro guarda el libro y termina.
Ahora, vamos a tener que escribir una macro para manejar todas las acciones que tienen que pasar cuando
se abre el libro.
1. Active el Editor de Visual Basic presionando ALT + F11 en el teclado
2. En la ventana de proyecto, encuentra tu proyecto / nombre del libro y hacemos clic en el signo (-) con el fin
de ver todas las hojas.
3. Haga clic en ThisWorkbook.
4. Seleccione el evento Open en el menú desplegable Evento.
5. Ahora pegamos el siguiente código:
Paso 1: En primer lugar, declaramos un objeto llamado ws. Esto creará un contenedor de memoria para cada
hoja de trabajo exista en el libro.
Paso 2: En el segundo paso, empezamos el bucle, diciendo a Excel que queremos evaluar todas las hojas de
trabajo en este libro.
Paso 3: En este paso lo que hacemos es mostrar la hoja en la que el bucle está actualmente. Esto a su efecto
muestra todas las hojas de trabajo, ya que cada hoja se hace visible.
Paso 4: En el paso cuatro todavía dentro del bucle debemos obtener la siguiente hoja.
Paso 5: Una vez que todas las hojas se hacen visibles, el paso cinco oculta la hoja de "INICIO". Una vez más,
se utiliza la propiedad xlVeryHidden para que el usuario no pueda mostrarla manualmente,
Una vez que se implementan las dos macros, tendremos un libro que sólo funcionará si el usuario habilita las
macros!
Habilitar macros automáticamente
Piensoque lomejorque podríashaceres dejarlaseguridadcomoestáy en tu librocrearuna páginaenblanco que sea
la primeraque se veaal abrirel libro.
Hechoeso,con la siguientemacroesconderíaesapáginainicial ypondríael restocomo visibles:
OptionExplicit
Private SubWorkbook_Open()
Dim i As Integer
For i = 1 To ThisWorkbook.Sheets.Count
ThisWorkbook.Sheets(i).Visible =(ThisWorkbook.Sheets(i).Name <>"nombreDeLaPaginaInicial")
Nexti
End Sub
‘Algosimilar,peroal revéstendrásque hacerparaocultar laspáginasal cerrar el libro.El códigosería:
Private SubWorkbook_BeforeClose(Cancel AsBoolean)
Dim i As Integer
For i = 1 To ThisWorkbook.Sheets.Count
ThisWorkbook.Sheets(i).Visible =(ThisWorkbook.Sheets(i).Name ="nombreDeLaPaginaInicial")
Nexti
End Sub
De estaforma,si no habilitanlasmacros...noveránlaspáginasdel libro.

Macros automáticamente

  • 1.
    Cómo forzar alusuario a habilitar las macros en Excel Hola, lo que les quiero comentar es una se esas siatuaciones que pasan de vez en cuando. Uno crea un dashboard muy práctico y bueno para la empresa, pero recibe una llamada de alguien de otro departamento diciendo que el dashboard no les funciona. Después de investigar un poquito, te das cuenta de que la principal razón del porqué no funciona es porque no han habilitado las macros. Para utilizar cualquier macro en Excel, los usuarios deben "Habilitar" las macros. Es decir, tienen que dar permiso a Excel para utilizar macros de ejecución. Se puede hacer esto haciendo clic en la advertencia de seguridad que aparece por encima de la barra de fórmulas. La conclusión es que podemos escribir todas las mejores macros en el mundo, pero nunca se usarán a menos que los usuarios "Habiliten las macros". Esto plantea la pregunta de si se puede obligar a los usuarios a habilitar las macros? La respuesta es sí - con un poco de engaño. La idea es relativamente simple. Se crea una hoja llamada algo así como "INICIO". En esa situación, no hay nada más que una simple advertencia indicando que las macros deben estar habilitadas. A continuación, se ocultan todas las hojas del libro de trabajo a excepción de la hoja que hemos llamado "INICIO". Y después se escribe una macro sencilla que muestre todas las hojas cuando se abra el libro. . En este punto, cuando se abre el libro, Excel pedirá al usuario que han de habilitar las macros. Los usuarios se verán obligados a hacerlo porque lo único que van a ver es la hoja de "INICIO" ya que las otras hojas estarán ocultas! Con el fin de hacer este trabajo, lo que realmente necesitamos son dos macros: una macro que oculta todas las hojas, menos la hoja "INICIO" cuando el libro se cierra y otra macro que muestra todas, menos la hoja de "INICIO" cuando se abre el libro. . En primer lugar, veamos las acciones que deben ocurrir cuando el libro se cierra. 1. Active el Editor de Visual Basic presionando ALT + F11 en el teclado 2. En la ventana de proyecto, encuentra tu proyecto / nombre del libro y hacemos clic en el signo (-) con el fin de ver todas las hojas.
  • 2.
    3. Hacemos clicen ThisWorkbook. 4. Seleccione el Workbook_BeforeClose en el menú desplegable Evento. 5. Ahora pegamos el siguiente código: Paso 1: En primer lugar, declaramos un objeto llamado ws. Esto creará un contenedor de memoria para cada hoja de trabajo exista en el libro. Paso 2: En el segundo paso, nos aseguramos que la hoja "INICIO" es visible.
  • 3.
    Paso 3: Enel tercer paso, empezamos el bucle, diciéndole a Excel que queremos evaluar todas las hojas de trabajo en este libro. Paso 4: En este paso simplemente se compara el nombre de la hoja "INICIO" con la hoja que se está actualmente en el bucle. Esto asegurará que las acciones que vienen a continuación se aplican a todas las hojas excepto a la hoja de "INICIO". Paso 5: Si los nombres de las hojas son diferentes, escondemos la hoja mediante la propiedad xlVeryHidden. Esta propiedad no sólo oculta la hoja, pero también evita que el usuario la muestre manualmente. Paso 6: En el paso seis todavía dentro del bucle debemos obtener la siguiente hoja. Paso 7: Una vez que se evalúan todas las hojas, la macro guarda el libro y termina. Ahora, vamos a tener que escribir una macro para manejar todas las acciones que tienen que pasar cuando se abre el libro. 1. Active el Editor de Visual Basic presionando ALT + F11 en el teclado 2. En la ventana de proyecto, encuentra tu proyecto / nombre del libro y hacemos clic en el signo (-) con el fin de ver todas las hojas. 3. Haga clic en ThisWorkbook. 4. Seleccione el evento Open en el menú desplegable Evento.
  • 4.
    5. Ahora pegamosel siguiente código: Paso 1: En primer lugar, declaramos un objeto llamado ws. Esto creará un contenedor de memoria para cada hoja de trabajo exista en el libro. Paso 2: En el segundo paso, empezamos el bucle, diciendo a Excel que queremos evaluar todas las hojas de trabajo en este libro. Paso 3: En este paso lo que hacemos es mostrar la hoja en la que el bucle está actualmente. Esto a su efecto muestra todas las hojas de trabajo, ya que cada hoja se hace visible. Paso 4: En el paso cuatro todavía dentro del bucle debemos obtener la siguiente hoja. Paso 5: Una vez que todas las hojas se hacen visibles, el paso cinco oculta la hoja de "INICIO". Una vez más, se utiliza la propiedad xlVeryHidden para que el usuario no pueda mostrarla manualmente, Una vez que se implementan las dos macros, tendremos un libro que sólo funcionará si el usuario habilita las macros!
  • 5.
    Habilitar macros automáticamente Piensoquelomejorque podríashaceres dejarlaseguridadcomoestáy en tu librocrearuna páginaenblanco que sea la primeraque se veaal abrirel libro. Hechoeso,con la siguientemacroesconderíaesapáginainicial ypondríael restocomo visibles: OptionExplicit Private SubWorkbook_Open() Dim i As Integer For i = 1 To ThisWorkbook.Sheets.Count ThisWorkbook.Sheets(i).Visible =(ThisWorkbook.Sheets(i).Name <>"nombreDeLaPaginaInicial") Nexti End Sub ‘Algosimilar,peroal revéstendrásque hacerparaocultar laspáginasal cerrar el libro.El códigosería: Private SubWorkbook_BeforeClose(Cancel AsBoolean) Dim i As Integer For i = 1 To ThisWorkbook.Sheets.Count ThisWorkbook.Sheets(i).Visible =(ThisWorkbook.Sheets(i).Name ="nombreDeLaPaginaInicial") Nexti End Sub De estaforma,si no habilitanlasmacros...noveránlaspáginasdel libro.