El uso de las Cintas de Opciones (Ribbon) y VBA (Visual Basic for Application). RibbonAndVBA

En este artículo se va a tratar a un nivel básico de las Cintas de Opciones (Ribbon) y su uso con VBA.

Ribbon a nivel de base de datos.

Si uno está acostumbrado a usar Barras de Herramientas Personalizadas deberá de cambiar el “chip” bueno jejeej cambiar no, olvidarse totalmente de ese concepto para entrar a un nuevo mundo del Ribbon que “supera” a las Barras pero que incomoda al tener que aprender varios conceptos nuevos y los siguientes son alguno de ellos,
  • El Ribbon va asociado a un formulario o informe o a la aplicación.
  • El Ribbon que esté asociado a un formulario sólo está activo cuando dicho formulario al estar abierto no sea emergente y esté visible, cualquier cambio de valor de estas dos últimas propiedades hace que el Ribbon desaparezca.
En caso de asociar el Ribbon a la base de datos este estará en cache mientras dure la sesión de la aplicación pudiendo ser sustituido por otra al abrir un formulario o informe volviendo a ser visible al cerrar los objetos comentados.Usando la interface de Access se puede establecer el Ribbon del siguiente modo,
  • Botón Office | Opciones de Access | Base de datos actual | Opciones de barra de herramientas y de la cinta de opciones | Nombre de banda de opciones:
 

 

Con código de VBA usando la propiedad “CustomRibbonID” del objeto Database.

  • CodeDb.Properties("CustomRibbonID") = "rbbInicio"
O para crearla,
  • CodeDb.Properties.Append CodeDb.CreateProperty("CustomRibbonID", dbText, "rbbInicio")
En todos los casos hace falta reiniciar la base de datos para hacer visible el Ribbon.

 

Ribbon a nivel de objetos formulario (form) o informe (report).

Sencillo, sencillo, no hay más que rascar de lo que se indica aquí y de modo parecido a la sección anterior hay un método visual y otro a través de código VBA.Usando el método visual y en modo edición de un form o report,
  • Hacer visible la Hoja de propiedades (Alt + Entrar) | Solapa: Otras | Nombre de banda de opción.

 

Con código de VBA usando la propiedad “RibbonName” del objeto Form o Report.
  • Me.Properties("RibbonName") = "rbbNombreRibbon"

 

Ribbon, planteamiento de uso.

A la conclusión que he llegado trasteando con esta nuevo bicho de Access 2007 es sencilla pero para llegar a ella me he tenido que pelear unas cuantas horas con él, en realidad es como se aprende y ¡¡salen un montón de notas!!.Para obtener una aplicación con Ribbon hace falta los siguiente,
  • Usar un Ribbon (rbbPrincipal) a nivel de base de datos, tal como se ha comentado en la sección anterior Ribbon a nivel de base de datos.
  • Usar Ribbon independientes para los formularios e informes (rbbFormA, rbbFormB, rbbSub1FormA, rbbSub2FormA, rbbReportA, etc.) que se irán activando y desactivando conforme el objeto tome el foco, tal como se comenta en la sección Ribbon a nivel de formulario (form) o informe (report).
Así de sencillo, no hay más.

Si uno es observador y está familiarizado con las convenciones de nombre podrá comprobar en los nombres de ejemplo de las Cintas de Opciones, como también se indica Sub de subformulario. Si dentro de un formulario existen uno o más subformularios estos también tienen (como formulario que es) la propiedad RibbonName para activar un Ribbon, al activar subFormA se dispara el Ribbon rbbSub1FormA, al tomar el foco subFormB el anterior desaparece y queda activo rbbSub1FormB, ¡genial! Como efecto visual es muy bueno y atractivo.

 

Ribbon ejemplo práctico.

Vayamos a visualizar lo comentado hasta ahora, descargar el ejemplo propuesto al final del artículo llamado test.RibbonAndVBA en Attachment.

Al abrir la base de datos se inicia con un formulario inicial de presentación, al pulsar el botón Aceptar se presenta un nuevo form llamado frmTest con dos grandes botones y un tercero para cerrarlo.

Antes de continuar hay que indicar que previo a abrirse los formularios se activa la Cinta de Opciones llamada rbbPrincipal y es la única visible en estos momentos.Volvemos a frmTest y pulsamos el primer botón grande, “Activar Cinta de Opciones …” y se puede apreciar como ha desaparecido rbbPrincipal y se ha hecho visible rbbAyuda.

 

Ribbon y sus particularidades.

Continuando con la base de datos de test nos encontramos con dos formularios el z01_frmEmergente y z02_frmInvisible que sirven para observar dos particularidades imaginables por su nombre.
  • z01_frmEmergente es un formulario con su propiedad emergente a True, al activar la cinta de opciones rbbAyuda y tras clicar el botón se observa que esta cinta aparece y desaparece inmediatamente por lo que no se aconseja usar este tipo de formularios si debe de usarse una cinta.
  • z02_frmInvisible es visible al abrirlo, activamos la cinta rbbAyuda usando el botón y a continuación clicamos Cambiar el estado de este formulario en invisible, voila, desaparece el form y la cinta. Es comprensible ya que el formulario pierde el foco y por tanto vuelve el Ribbon principal.

McPegasus, 30/04/2008

Published 30/4/2008 15:01 por McPegasus
Archivado en: ,
Comparte este post:

Comentarios

# re: El uso de las Cintas de Opciones (Ribbon) y VBA (Visual Basic for Application). RibbonAndVBA

Wednesday, June 10, 2009 9:50 AM por CarlesMS

McPegasus:

Desde aquellos tiempos en que empecé consultando el foro de Access y tu primera página... ha pasado mucho tiempo y la verdad que tengo mucho que agradecer a tu trabajo.

Si fuera una tia te premiaria con un buen trabajito, pero afortunadamente (!) no es el caso.

Un saludo, Mc!

# El uso de las Cintas de Opciones (Ribbon) y VBA (Visual Basic for Application). RibbonAndVBA

Wednesday, July 22, 2009 6:06 PM por Comandante

buen trabajo

chido one

# re: El uso de las Cintas de Opciones (Ribbon) y VBA (Visual Basic for Application). RibbonAndVBA

Wednesday, July 29, 2009 4:59 PM por Eymard

Hola McPegasus,

Soy seguidor tuyo de hace algunos años, pero me había desconectado del Access, hice varias cosas con la versión 2003 y tus artículos y ejemplos me ayudaron mucho, hoy he retomado con la versión 2007 y ya nuevamente me has empezado a ayudar.

Muchas Gracias!!!

# re: El uso de las Cintas de Opciones (Ribbon) y VBA (Visual Basic for Application). RibbonAndVBA

Wednesday, February 17, 2010 11:49 AM por Angel L.A.

Hola a todos, una vez más he de daros las gracias por vuestra aportación a la progresiva reducción de mi ignorancia... aunque esta vez tengo un problemilla al descargar el ejemplo Access me dice que el formato de la base no es reconocido... ¿que estoy haciendo mal?. Gracias.

# re: El uso de las Cintas de Opciones (Ribbon) y VBA (Visual Basic for Application). RibbonAndVBA

Wednesday, October 13, 2010 10:34 AM por David

Hola, estoy intentando assignar una banda de opciones a todos los formularios, recorriendo todos los formularios e intentando assignarles en esa propiedad el nombre del Ribbon, pero no me funciona. Si alguien sabe como hacerlo? Gracias! El código que utilizo:

   Dim frm As AccessObject

   For Each frm In Application.CurrentProject.AllForms

       If frm.Name <> "Codi Formularis" Or frm.Name <> "Codi Reports" Or frm.Name <> "frmCodiActuacio" Or frm.Name <> "frmConsulta" Or frm.Name <> "Util_Llistar" Or frm.Name <> "Util_Llistar_Selecció" Then

              'frm.Properties("RibbonName") = "Eines" 'NO FUNCIONA

              'frm.Properties.Item("RibbonName") = "Eines" 'NO FUNCIONA

              'frm.RibbonName = "Eines" 'NO FUNCIONA

              'frm.RibbonName ("Eines") 'NO FUNCIONA

       End If

   Next frm