Access 2007. Cambiar de cinta de opciones (Ribbon) usando VBA
Fecha de publicación: 14-mar-2012 7:54:59
06/04/2008
Cargar las cintas de opciones
Las distintas bandas de opciones, o "Ribbons", que se vayan a usar en una aplicación deberían cargarse todas al arrancar la aplicación y luego, sobre la marcha, ir cambiando de unas a otras. Podemos usar el método LoadCustomUI, compartido con otras aplicaciones de Office, para cargar los distintos Ribbons, pero si los tenemos guardados en una tabla UsysRibbons (específica de Access) es innecesario, pues Access al abrirse se encarga de cargarlos. Por tanto, salvo que existe algún motivo muy especial en sentido contrario, la mejor opción para guardar una cinta de opciones en Access es en una tabla UsysRibbons.
Asignar las cintas de opciones a formularios, informes y aplicación
Ribbon genérico y Ribbons contextuales
Los Ribbons van asociados bien a la aplicación, bien a un formulario o informe. En el primer caso, hablamos de un Ribbon genérico y en los otros dos, de Ribbons contextuales, tanto una como los otros, tienen propiedades específicas para indicar cuál es la cinta de opciones que le corresponde.
Propiedades para asignar la cintade opciones
En el caso de los contextuales en formularios e informes, la propiedad es "Nombre de la banda de opciones", en VBA Form.RibbonName o Report.RibbonName, y la encontramos cercar del final de la lista de propiedades del formulario o informe.
En el Ribbon genérico de la base de datos, la propiedad sería CurrentDb.Properties("CustomRibbonID") en VBA, pero la podemos asignar directamente pulsando el Botón de Office|Opciones de Access|Base de datos actual|Nombre de la banda de opciones.
Cambiar de cinta de opciones
El Ribbon contextual de formularios o informes se puede cambiar sobre la marcha, pero el genérico, el de la aplicación, se asigna al arrancar ésta. Aunque cambiemos la propiedad CustomRibbonID, esto no tendrá efecto hasta que cerremos y volvamos a abrir la aplicación.
Por el contrario, el Ribbon contextual de formularios o informes se puede cambiar sobre la marcha, aunque debe estar cargado previamente. Basta con decir
me.RibbonName = "NombreRibbon"
para cambiar éste. Sin embargo, son pocas las ocasiones en que puede ser necesario cambiar el Ribbon una vez abierto el formulario o informe y, lo habitual es que esté asociado a ellos, por lo que es suficiente con que la propiedad "Nombre de la banda de opciones" tenga asignado un valor para que, al recibir el foco el formulario o informe, cambie el Ribbon al indicado en esta propiedad.
Combinar cintas de opciones o hacer que se muestren solas
Los Ribbons contextuales de nuestros formularios o informes se mostrarán, normalmente combinados con el Ribbon genérico de nuestra aplicación y con los Ribbons propios de Access.
Nuestros Ribbons pueden mostrarse combinados con los Tabs de los Ribbons propios de Access (Inicio, Diseño, Herramientas…). Esto puede parecer cómodo en un primer momento, pues nos muestra opciones contextuales sin obligarnos a diseñar nada, pero luego nos damos cuenta de que puede estar mostrándonos opciones que no deseamos mostrar y que otras, que pueden resultar útiles, no se mostrarán cuando usemos la Runtime.
Mostrar sólo las cintas de opciones personalizadas
Evitar que se muestren otros Ribbons que los nuestros personalizados, es bien sencillo: En el texto XML correspondiente a nuestra cinta de opciones, damos valor verdadero a la propiedad StarFromScratch:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true">
Si la aplicación tiene asignado un Ribbon genérico, éste se combinará con los contextuales de formularios e informes si es que existen y, si no existen, será el predeterminado.
Mostrar sólo la cinta de opciones del objeto que tiene el foco
Si al entrar en un formulario o informe, queremos que sólo se muestre el Ribbon asignado en la propiedad "Nombre de banda de opciones", RibbonName, basta con dejar en blanco la propiedad de la aplicación CustomRibbonID que hemos visto que podíamos asignar en Botón de Office|Opciones de Access|Base de datos actual|Nombre de la banda de opciones.
Si queremos no usar una cinta de opciones para la aplicación y, sin embargo, que los distintos Ribbons contextuales de los formularios compartan opciones en común, tendremos que copiar en pegar en cada uno de ellos el conjunto de Tabs, grupos o controles que queremos que compartan.