You are on page 1of 18

CURSO DE VB

CAPTULO 191

ndice de contenido
PERSONALIZAR LA CINTA DE OPCIONES .................................................................................2
INTRODUCCIN...........................................................................................................................2
CREANDO LA ESTRUCTURA DE NUESTRA BD.....................................................................3
LA CINTA DE OPCIONES. IDEAS GENERALES.......................................................................4
CDIGO XML...........................................................................................................................5
NUESTRA TABLA USysRibbons..............................................................................................5
LOS NOMBRES DE LA CINTA DE OPCIONES.....................................................................6
PLANIFICANDO NUESTRA CINTA DE OPCIONES.................................................................6
EL CDIGO XML INICIAL......................................................................................................7
PROGRAMACIN DE NUESTRA CINTA COMN..............................................................9
CMO ACTIVAR NUESTRA CINTA COMN?.............................................................12
PROGRAMACIN DE NUESTRA CINTA DE FORMULARIO..........................................13
CMO ACTIVAR NUESTRA CINTA DE FORMULARIO?...........................................14
PROGRAMANDO NUESTROS BOTONES CON VBA............................................................15
PREPARATIVOS PREVIOS....................................................................................................15
AHORA S, A POR EL CDIGO VBA...................................................................................15
UNAS LTIMAS LNEAS SOBRE LA CINTA DE OPCIONES...............................................17
PARA FINALIZAR EL CAPTULO.............................................................................................18

1 La BD donde estn los ejemplos de este captulo os la podis bajar aqu.

1
Vistame en http://neckkito.siliconproject.com.ar
PERSONALIZAR LA CINTA DE OPCIONES

INTRODUCCIN
Este captulo ser de aplicacin para usuarios de Access
2007 y 2010. Microsoft, a partir de Access 2007, ha
cambiado el sistema de mens que era tpico de Access
2003, y lo ha sustituido por la llamada cinta de opciones.

Es por ello por lo que si alguno de vosotros an utilizis 2003 el


presente captulo slo os ser de utilidad si pensis migrar a una
versin superior de Access.

As como la configuracin de mens era extremadamente verstil en Access 2003, en sus


siguientes versiones este tema se ha vuelto un poco ms complejo.

Tenemos algunas soluciones accesorias, como la creacin de mens a travs de macros. Si


estis interesados en husmear por este tema os recomiendo que analizis este ejemplo de la
web (aqu).

Ms cosas: para poder programar una cinta de opciones personalizada vamos a requerir de
unos mnimos conocimientos de XML (no os asustis: son realmente mnimos! ). Lo que
haremos (entre otras cosas) en general, en este captulo, ser:

1.- Aprenderemos cmo podemos programar nuestra cinta de opciones personalizada.


2.- Aprenderemos cmo modificar la cinta de opciones de Access

Dentro del punto 1, veremos:

a.- cmo crear una cinta de opciones para toda la aplicacin


b.- cmo crear otra cinta de opciones especial, que slo nos aparecer cuando abramos un
formulario (ya que la ligaremos a dicho formulario).

Y dentro de los puntos a y b anteriores, veremos cmo:

i.- Aprovechar las funciones de los botones de los que ya dispone Access
ii.- Crearnos nuestros propios botones para que realicen las acciones que nosotros queramos
(y ah es donde entra en juego nuestra programacin en VBA).

Al final del captulo os indicar algunos enlaces que he considerado interesantes para que
podis profundizar en diferentes aspectos del ribbon de Access.

Visto el esquema genrico del captulo creo que la metodologa ms efectiva es seguir un
ejemplo y aprovecharlo para ir explicando las caractersticas de cada paso.

Por eso, si os parece bien, vamos a crearnos una BD muy simple (para no hacer este captulo
interminable) desde cero. Esta BD nos servir para gestionar las entradas/salidas en prstamo
de libros de una biblioteca.

Pongmonos pues manos a la obra:

2
Vistame en http://neckkito.siliconproject.com.ar
CREANDO LA ESTRUCTURA DE NUESTRA BD2
Crearemos una tabla, a la que llamaremos TPrestamos, con
la siguiente estructura:

Con esto nos bastar.

Ahora nos creamos un formulario que nos har de men, y que llamaremos FMenu.

A continuacin creamos los siguientes objetos:

El formulario FPrestamos, basado en la tabla TPrestamos.


El formulario FHistorial, basado en la tabla TPrestamos, pero en forma de formularios
continuos.

El formulario FPrestamos me ha quedado as:

El cdigo del botn cerrar (cmdCerrar) es

Private Sub cmdCerrar_Click()


DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "FMenu"
End Sub

El formulario FHistorial me ha quedado as

2 La estructura de nuestra BD ser mnima y no ptima, pues el objetivo del captulo no es aprender a estructurar una BD. Por ello,
no tomis esta referencia como lo que debera ser una BD bien estructurada (porque no lo es).

3
Vistame en http://neckkito.siliconproject.com.ar
El cdigo del botn cerrar (cmdCerrar) ser:

Private Sub cmdCerrar_Click()


DoCmd.Close acForm, Me.Name
End Sub

En el formulario FMenu vamos a insertar:

Un botn (cmdAbreFPrestamos), que nos abrir FPrestamos preparado para la adicin de un


nuevo registro
Un combo (cboDevolucion) que nos abrir FPrestamos preparado para marcar la devolucin del
libro.

El cdigo de cmdAbreFPrestamos ser:

Private Sub cmdAbreFPrestamos_Click()


DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "FPrestamos", , , , acFormAdd
End Sub

En el combo, en sus propiedades, nos vamos a la pestaa Datos Origen de la fila, y


escribimos la siguiente SQL:

SELECT DISTINCT TPrestamos.Titulo FROM TPrestamos;

Y en el evento Despus de actualizar escribimos el siguiente cdigo:

Private Sub cboDevolucion_AfterUpdate()


DoCmd.OpenForm "FPrestamos", , , "[Titulo]='" & Me.cboDevolucion.Value & "'" _
& " AND [Devolucion]=FALSE"
DoCmd.Close acForm, Me.Name
End Sub

Y, en principio, eso es todo. Veamos cmo podemos construirnos nuestra cinta de opciones
personalizada para nuestra aplicacin.

LA CINTA DE OPCIONES. IDEAS GENERALES


Vamos a ver cules son los elementos que necesitamos para poder personalizar la cinta de
opciones con nuestros botones.

4
Vistame en http://neckkito.siliconproject.com.ar
CDIGO XML
Para programar nuestra cinta de opciones deberemos
hacerlo utilizando cdigo XML. Y para ello vamos a necesitar
un editor de XML. Aunque eso puede hacerse en cualquier
editor de textos (el mismo bloc de notas nos servira) yo os
recomiento otros editores un poco ms especializados en
xml. Por ejemplo, el que utilizo yo es el notepad++, que
podris encontrar en la web portableapps (efectivamente,
como habis intuido, es un programa portable, por lo que
no requiere instalacin en nuestro disco duro).

De todas maneras insisto en que hay otros programas por esos mundos de Dios que os
pueden servir igualmente bien.

NUESTRA TABLA USysRibbons


El cdigo que escribamos, junto con diferentes identificadores (ya los veremos en su
momento) se guardan en una tabla que crearemos, y que denominaremos USysRibbons.

La tabla USysRibbons es detectada por Access como una tabla de sistema, aunque no de
Access (las tablas de sistema de Access llevan el prefijo MSys), sino de usuario. Cmo
podemos verlas? Pues de la siguiente manera:

Nos situamos sobre el panel de exploracin, en cualquier espacio en blanco, y hacemos


click derecho del ratn. Seleccionamos la opcin Opciones de exploracin... y, en la
ventana que nos aparece, marcamos el check de Mostrar objetos del sistema. Si
hecho esto aceptamos veremos cmo nos aparecen todas las tablas de sistema.

Y por qu no construirnos nuestra tabla USysRibbons ahora? Pues creamos una tabla nueva, a
la cual, lgicamente, llamaremos USysRibbons, con la siguiente estructura:

5
Vistame en http://neckkito.siliconproject.com.ar
LOS NOMBRES DE LA CINTA DE OPCIONES
Veremos que existe una especie de jerarqua para llamar a
los diferentes elementos de una cinta de opciones.
Bsicamente, nos encontraremos con:

La definicin de la cinta (ribbon)


La pestaa de la cinta (tab)
El grupo de una pestaa (group)
El nombre de un control personalizado (id) o el nombre de un control estndar (idMso).

Y ahora es cuando aparece la gran pregunta: cmo se llaman los nombres de las cintas, de
los grupos y de los controles estndar? Es decir, a la cinta de opciones que ya existe, qu
nombres les ha puesto Microsoft?

Por ejemplo, la primera pestaa de inicio tiene el curioso nombre de <TabHomeAccess>; el


grupo Buscar tiene el nombre <GroupFindAccess>; el control para aplicar filtro se llama
<ApplyFilter>...

Para ver todos estos nombres podis bajaros estos documentos, con los nombres
exclusivamente para Access3:

Nombres en Access 2007 (aqu) + Actualizacin 2007 (aqu)


Nombres en Access 2010 (aqu).

Si queris ver los nombres para todas las aplicaciones de Office podis visitar los siguientes
enlances:

Nombres Office 2007:


(http://www.microsoft.com/en-us/download/details.aspx?id=3582)
Nombres Office 2010:
(http://www.microsoft.com/en-us/download/details.aspx?id=6627)

PLANIFICANDO NUESTRA CINTA DE OPCIONES


Es un buen ejercicio, antes de empezar a rellenar cdigo XML, plantear cuidadosamente cmo
va a ser nuestra cinta de opciones: qu agrupaciones tendr, que controles tendr cada
grupo... Una cinta de opciones pierde parte de su utilidad si el usuario tiene que empezar a
buscar qu botn debe pulsar para realizar una accin si las disposiciones no siguen un poco
de lgica. Sirva esto simplemente como recomendacin.

Respecto de nuestra BD de ejemplo vamos a hacer lo siguiente:

Vamos a crearnos una cinta de opciones comn para todos los formularios
Vamos a crear una cinta especfica para el formulario FPrestamos
Vamos a crear una cinta especfica para el formulario FHistorial

3 Los archivos de este ejemplo y que os propongo para su descarga han sido bajados por m en junio 2012. Es decir, que,
tericamente (si Microsoft no nos engaa) estn actualizados a esa fecha.

6
Vistame en http://neckkito.siliconproject.com.ar
EL CDIGO XML INICIAL
Nuestro cdigo va a tener siempre unos elementos
comunes, que van a ser:

La cabecera del cdigo (el namespace): se corresponde con


el CUSTOM UI, con una referencia a Microsoft, y ser:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

A continuacin debemos operar con el atributo startFromScratch, que puede adoptar los
valores true o false (ntense las comillas, pues hay que utilizarlas). Si utilizamos false
estaremos indicando que estamos modificando la barra de herramientas estndar; si usamos
true es que creamos una desde cero.

Y para ello escribiramos:

<ribbon startFromScratch="false">

Aprovecho para haceros notar un detalle: cuando escribimos en XML utilizamos la notacin
camello: es decir, las pablabras se escriben juntas, empezando por minscula, pero la
primera letra de cada palabra entera (a partir de la segunda) se comienza en mayscula. As,
la letra U de la palabra customUI, por ejemplo, se escribe en mayscula, dando la
sensacin de que es la joroba de un camello. Si son ms palabras, como por ejemplo
startFromScratch, ya vemos claramente (espero) cmo funciona esta sistemtica.

Finalmente, escribimos la estructura jerrquica que comentbamos en el apartado anterior,


siguiendo una sistemtica anidada. Para indicar que empieza un elemento lo que hacemos es
escribir el nombre del elemento entre <>; para indicar que finaliza dicho elemento lo que
hacemos es escribir de nuevo el nombre del elemento, precedido de una barra inclinada, todo
ello siempre entre <>4.

Ms o menos nos debera quedar una cosa as:

<customUI...>
<ribbon startFromScratch="false">
<tabs>
<(elementos del tab y valores)>
<group (elementos del group y valores)>
<button (elementos del button y valores)/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>

Si nos fijamos en el esquema anterior, los interdentados nos muestran el nivel jerrquico. Es
importantsimo cerrar siempre los elementos por orden inverso a su creacin. Es decir, que s
es correcto escribir:

<amo>
<esclavo>
</esclavo>
4 No puedo aqu explicar cmo funciona el lenguaje XML, lamentablemente. Por ello slo indicar las caractersticas que necesitemos
para nuestro ribbon.

7
Vistame en http://neckkito.siliconproject.com.ar
</amo>

Pero no sera correcto escribir:

<amo>
<esclavo>
</amo>
</esclavo>

Si analizis la lnea del button veris que parece que no lo


cerramos, pero en realidad s lo cerramos: podemos utilizar un
cierre en la misma lnea de creacin. Por ejemplo, podramos
escribir

<amo/>

Evidentemente, eso lo podemos hacer si no tenemos un nivel inferior de jerarqua, porque si


no, como acabamos de comentar, estaramos cerrando el principal antes que el secundario.

Veris que he puesto (elementos del tab y valores). A continuacin os indico en una tabla lo
ms comn de estos elementos y valores para operar con la cinta:

ELEMENTO SUBELEMENTO QU ES? COMENTARIOS


tabs tab id Nombre nico de la pestaa
label Nombre que se muestra en la pestaa
visible Muestra u oculta la pestaa true o false
group id Nombre nico del grupo
label Nombre que se muestra en el grupo
control idMso Nombre del control existente de Access
label Nombre que se muestra en el control
enabled Activa o desactiva el control
button id Nombre nico del botn btnNombreBoton
label Nombre que se muestra en el botn
enabled Activa o desactiva el botn true o false
imageMso Imagen del botn
size Tamao del botn normal o large
onAction Funcin que se va a ejecutar al hacer nombreDeLaFuncion
click sobre el botn
OTROS ELEMENTOS QUE PODEMOS UTILIZAR
dropDown Lista desplegable
comboBox Lista desplegable que admite entradas
manuales
screenTip Texto de ayuda contextual que
aparecer al pasar el puntero del ratn
sobre el botn

Vamos a incidir sobre algunos puntos:

8
Vistame en http://neckkito.siliconproject.com.ar
No se pueden ni aadir ni eliminar elementos de la cinta
estndar de Access. Lo mximo que podemos hacer es
llamar a algn elemento de esa cinta predeterminada y
situarlo como no visible.

El subelemento imageMso hace una llamada a la imagen


predeterminada de los botones de Access que existen. Para
hacer esa llamada necesitamos conocer el nombre exacto
del botn. Podemos recurrir al archivo de nombres cuyo
enlace os indicaba un poco ms arriba o podemos recurrir a
otro sistema, que es el siguiente:
Pulsamos el botn de Office (o el men Archivo en 2010)
Opciones de Access
Opcin Personalizar
En la ventana de la derecha tenemos una lista de controles. Si situamos el puntero
del ratn sobre alguno de ellos y dejamos que nos aparezca la ayuda contextual
veremos que, al final del texto de ayuda y entre parntesis, nos aparece el nombre
del control: ese es el que debemos utilizar.

El subelemento imageMso tambin puede hacer una llamada a una imagen que
hayamos diseado nosotros mismos para el botn.

PROGRAMACIN DE NUESTRA CINTA COMN


Si nos fijamos en la parte superior de Access veremos lo siguiente:

Pronto vamos a ver un elemento ms (el nuestro), que llamaremos <Mis opciones>.

9
Vistame en http://neckkito.siliconproject.com.ar
Abrimos la tabla USysRibbons y escribimos, en el primer registro, lo siguiente:

Y en el campo [RibbonXML] escribimos el siguiente cdigo:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab idMso="TabHomeAccess"
visible="false">
</tab>
<tab id="cintaComun"
label="Mis Opciones"
visible="true">
<group id="cintaComunGrupoAccess"
label="Opciones generales Access">
<control idMso="Copy"
label="Copiar datos"
enabled="true"/>
<control idMso="Paste"
label="Pegar datos"
enabled="true"/>
</group>
<group id="cintaComunGrupoMio"
label="Mis opciones personalizadas">
<button id="btnAbreFPrestamos"
imageMso = "FileServerTransferDatabase"
label="Prestar libro"
size="large"
enabled="true"
onAction="subAbreFPrestamos"/>
<button id="btnAbreHistorial"
imageMso = "DataRefreshAll"
label = "Ver historial"
size="large"
enabled = "true"
onAction="subAbreFHistorial"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>

Analicemos el cdigo:

La cabecera est compuesta por las lneas comunes que ya conocemos:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>

La siguiente etiqueta <tab> lo que hace es convertir en no visible la cinta Inicio

<tab idMso="TabHomeAccess"
visible="false">
</tab>

10
Vistame en http://neckkito.siliconproject.com.ar
Como vemos, aqu debemos saber que la cinta Inicio se
llama TabHomeAccess (y para eso podemos recurrir al
fichero para el cual os apuntaba los enlaces ms arriba).

Si quisiramos ocultar no toda la cinta, sino algunos


elementos, deberamos llegar hasta el nivel que
quisiramos ocultar. Por ejemplo, si quisiramos llegar a
ocultar un grupo deberamos seguir la siguiente estructura:

<tab idMso=NombreDeLaTab
visible = true>
<group idMso=NombreDelGrupoAOcultar
visible = false>
</group>
</tab>

Y lo mismo si, ms all del grupo, queremos llegar a un control en concreto.

La segunda etiqueta tab ya es la definicin de nuestra cinta de opciones

<tab id="cintaComun"
label="Mis Opciones"
visible="true">

A partir de ah creamos los grupos. Como veis yo he creado dos grupos diferentes, para
que veais cmo manejar los controles de Access y los botones personalizados. As:

El primer grupo corresponde a los controles de Access

<group id="cintaComunGrupoAccess"
label="Opciones generales Access">
<control idMso="Copy"
label="Copiar datos"
enabled="true"/>
<control idMso="Paste"
label="Pegar datos"
enabled="true"/>
</group>

Como vis, llamo al control a travs de <control idMso=NombreControl> y manipulo sus


propiedades. Acabado con uno (Copy), empiezo con otro (Paste).

El segundo grupo corresponde a nuestros botones personalizados

<group id="cintaComunGrupoMio"
label="Mis opciones personalizadas">
<button id="btnAbreFPrestamos"
imageMso = "FileServerTransferDatabase"
label="Prestar libro"
size="large"
enabled="true"
onAction="subAbreFPrestamos"/>

11
Vistame en http://neckkito.siliconproject.com.ar
<button id="btnAbreHistorial"
imageMso = "DataRefreshAll"
label = "Ver historial"
size="large"
enabled = "true"
onAction="subAbreFHistorial"/>
</group>

La mecnica es muy parecida al manejo de los controles de Access, slo que utilizando botones
(control versus button). A los botones les he asignado una imagen (la que me ha gustado
ms), recurriendo para ello al nombre que me mostraba el propio Access (tal y como os
explicaba ms arriba con el tema buscar los nombres en las opciones de Access). Los
mostraremos como botones grandes (en contraposicin a los controles) para que
podis ver el efecto en la aplicacin.

Finalmente, he asignado dos procedimientos (subAbreFPrestamos y subAbreFHistorial). Esos


procedimientos deberemos programarlos, pero esto os lo explicar un poco ms abajo.

Para acabar completamos el cdigo con todas las etiquetas necesarias de cierre

</tab>
</tabs>
</ribbon>
</customUI>

CMO ACTIVAR NUESTRA CINTA COMN?


La activacin de la cinta comn es un proceso muy sencillo, lo que algo reiterativo (esas
cosas que tiene Access a veces).

El proceso es el siguiente:

1.- Ya tenemos nuestro cdigo en la tabla USysRibbons, pero Access an no sabe que hemos
creado una cinta personalizada. Qu hacemos?

Salimos completamente de Access y volvemos a entrar.

2.- Una vez reiniciado ahora Access s ya sabe que existe una cinta de opciones nueva. Vamos
a configurarla:

Hacemos click en el botn de Office (Archivo en Access 2010) Opciones de Access


Base de datos actual, y en el apartado Opciones de la barra de herramientas y de la
cinta de Opciones seleccionamos nuestra cinta.

12
Vistame en http://neckkito.siliconproject.com.ar
3.- Ahora Access ya sabe que tiene que mostrar nuestra cinta de opciones, pero an no ha
refrescado esa informacin. Pues...

Salimos totalmente de Access y volvemos a entrar

4.- Y ahora s, ya nos aparece nuestra maravillosa cinta personalizada

Nota: si hay algn error de cdigo XML no aparecer nuestra cinta. Si os pasa eso no
queda otra que repasar bien el cdigo de la cinta hasta dar con el error. El rollo est en que
para cada modificacin tendremos que salir de Access y volver a entrar para ver si lo hemos
corregido correctamente.

PROGRAMACIN DE NUESTRA CINTA DE FORMULARIO


El proceso para programar la cinta ligada a un formulario es prcticamente idntico al que
hemos desarrollado para lo que hemos denominado cinta comn.

Para la cinta que ligaremos al formulario FPrestamos vamos a realizar lo siguiente:

.- En la tabla USysRibbons escribiremos:

13
Vistame en http://neckkito.siliconproject.com.ar
Siendo el cdigo XML


<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="cintaFPrestamos"
label="Men Prstamos"
visible="true">
<group id="toqueteoRegistros"
label="Trabajo con registros">
<control idMso="GoToNewRecord"
label="Nuevo prstamo"
enabled="true"/>
<control idMso="RecordsDeleteRecord"
label="Borrar entrada"
enabled="true"/>
</group>
<group id="operoConFormulario"
label="Opciones de formulario">
<button id="btnCierraFPrestamos"
imageMso = "CloseDocument"
label="Volver a Men"
size="large"
enabled="true"
onAction="subCierraFPrestamos"/>
<button id="btnAbreHistorial"
imageMso = "DataRefreshAll"
label = "Ver historial"
size="large"
enabled = "true"
onAction="subAbreFHistorialFiltrado"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>

Os dejo el anlisis del cdigo para vosotros, aunque no deberais tener problemas para
entenderlo. Slo hay que recordar que debemos programar dos funciones:
subCierraFPrestamos y subAbreFHistorialFiltrado.

CMO ACTIVAR NUESTRA CINTA DE FORMULARIO?


Como ya habris intuido, una vez creado el cdigo XML en USysRibbons habr que salir de
Access para que, al reinicializarlo, cargue la nueva cinta. Una vez hecho esto:

.- Abrimos el formulario FPrestamos en vista Diseo


.- Sacamos sus propiedades Pestaa Otras Nombre de banda de opciones, y ah
seleccionamos OpcionesFPrestamos

14
Vistame en http://neckkito.siliconproject.com.ar
Y eso debera ser todo. Si situamos FPrestamos en vista Formulario nos debera aparecer
nuestra cinta. Al cerrar FPrestamos esa cinta debera desaparecer.

Aadir que podemos hacer lo mismo con un informe; es decir, programar una cinta
personalizada para un informe: slo deberamos ligarle la cinta correspondiente.

PROGRAMANDO NUESTROS BOTONES CON VBA

PREPARATIVOS PREVIOS
Debemos preparar nuestra BD para que nuestro cdigo VBA pueda interactuar con la cinta de
opciones. Ello implica realizar un paso previos a la programacin.

Ese paso consiste en registrar una referencia, dado que nuestro cdigo debe reconocer algunos
cdigos que llaman a la cinta de opciones. Para conseguir esto abrimos el VBE (ALT+F11) y nos
vamos a Men Herramientas Referencias..., y buscamos y marcamos el check de la
librera Microsoft Office 12.0 Object Library (la versin 14.0 para Access 2010).

Preparativo listo.

AHORA S, A POR EL CDIGO VBA


Bueno... nos toca programar un poco con VBA.

Vamos a crear pues una serie de procedimientos, pero debemos tener en cuenta que en todos
los procedimientos que programemos vamos a tener que seguir la siguiente estructura:

Public sub nombreProcedimiento (ByVal control As IRibbonControl)

15
Vistame en http://neckkito.siliconproject.com.ar
De esta manera enlazamos la cinta con el cdigo que escribiremos.

Recapitulemos: de la cinta comn tenemos dos


procedimientos:

subAbreFPrestamos
subAbreFHistorial

y de la cinta de formulario tenemos dos procedimientos:

subCierraFPrestamos
subAbreFHistorialFiltrado

Lo que vamos a hacer es crearnos un mdulo estndar, que llamaremos mdlRibbons. Para la
primera funcin programaremos lo siguiente:

Public Sub subAbreFPrestamos(ByVal control As IRibbonControl)


On Error GoTo sol_err
'Comprobamos que FPrestamos no est ya cargado
If CurrentProject.AllForms("FPrestamos").IsLoaded Then
'Si est cargado avisamos y salimos
MsgBox "El formulario ya est abierto", vbExclamation, "FORMULARIO ABIERTO"
Else
'Si no est cargado cerramos FMenu y lo abrimos para aadir un registro nuevo
DoCmd.Close acForm, "FMenu"
DoCmd.OpenForm "FPrestamos", , , , acFormAdd
End If
Salida:
Exit Sub
sol_err:
MsgBox "Se ha producido el error " & Err.Number _
& " - " & Err.Description
Resume Salida
End Sub

Como veis el cdigo no tiene mayor complicacin, salvo por la particularidad que
comprobamos, antes de realizar la accin, si FPrestamos est cargado o no, y actuamos en
consecuencia.

El cdigo para subAbreFHistorial sera:

Public Sub subAbreFHistorial(ByVal control As IRibbonControl)


On Error GoTo sol_err
'Comprobamos que FPrestamos no est ya cargado
If CurrentProject.AllForms("FHistorial").IsLoaded Then
'Si est cargado avisamos y salimos
MsgBox "El formulario ya est abierto", vbExclamation, "FORMULARIO ABIERTO"
Else
'Si no est cargado cerramos FMenu y lo abrimos para aadir un registro nuevo
DoCmd.OpenForm "FHistorial", , , , acFormReadOnly
End If
Salida:

16
Vistame en http://neckkito.siliconproject.com.ar
Exit Sub
sol_err:
MsgBox "Se ha producido el error " & Err.Number _
& " - " & Err.Description
Resume Salida
End Sub

El cdigo de subCierraFPrestamos sera, simplemente:

Public Sub subCierraFPrestamos(ByVal control As IRibbonControl)


DoCmd.Close acForm, "FPrestamos"
DoCmd.OpenForm "FMenu"
End Sub

Y finalmente, el cdigo de subAbreFHistorialFiltrado sera:

Public Sub subAbreFHistorialFiltrado(ByVal control As IRibbonControl)


Dim vLector As String
vLector = Nz(Forms!FPrestamos.Lector.Value, "")
If vLector = "" Then
MsgBox "Debe indicar el nombre de un lector para filtrar su historial"
Else
DoCmd.OpenForm "FHistorial", , , "[Lector]='" & vLector & "'", acFormReadOnly
End If
End Sub

Slo me queda aadir que, aunque yo no lo he hecho ms que en los cdigos de la cinta
comn (porque los cdigos programados son muy simples), es buena costumbre aadir un
control de errores en los cdigos (sobre todo si la cinta de opcines es comn y no est ligada a
ningn formulario). Si los usuarios manazas ya dan problemas con un objeto normal de
Access, si le aadimos un men las consecuencias pueden ser insospechadas... je, je...

UNAS LTIMAS LNEAS SOBRE LA CINTA DE OPCIONES


Si hay alguien que se haya entusiasmado con esto de tener mi propia cinta de opciones
puede complementar o profundizar sobre la programacin de la cinta de opciones en las
siguientes direcciones:

http://office.microsoft.com/es-es/access-help/personalizar-la-cinta-de-opciones-
HA010211415.aspx (cmo crear un ribbon)

http://76areal.wordpress.com/2011/05/10/menus-y-botones-para-access-2007-y-2010/
(ofrece varias opciones adicionales de cmo configurar el men de las aqu explicadas)

http://www.microsoft.com/en-us/download/details.aspx?id=8640 (ejemplo de Microsoft, donde


podris ver cmo combinar el ribbon con macros)

http://geeks.ms/blogs/access/archive/2008/04/06/access-2007-cambiar-de-banda-de-
opciones-ribbon-usando-vba.aspx (con cosas curiosas sobre el ribbon que pueden sernos tiles
para nuestra aplicacin)

17
Vistame en http://neckkito.siliconproject.com.ar
http://geeks.ms/blogs/access/archive/2009/01/14/el-uso-de-las-cintas-de-opciones-ribbon-y-
xml-lenguaje-de-marcado-extensible-ribbonandxml-01.aspx (para ocultar iconos del men del
botn de Office)

PARA FINALIZAR EL CAPTULO


Si habis echado un vistazo a los enlaces que os propongo
habris podido comprobar que el tema de la cinta de
opciones puede complicarse bastante, si uno quiere. El
objetivo de este captulo era simplemente encaminaros y
mostraros el recibidor de la casa Ribbon... El resto de
habitaciones deberis recorrerlas vosotros solos, si queris
profundizar en el tema.

Espero que lo explicado hasta aqu os sea de utilidad.

Un saludo, y...

suerte!

18
Vistame en http://neckkito.siliconproject.com.ar

You might also like