You are on page 1of 22

Fermu Website

Cmo Asociar un Calendario a un Campo en Word


Escrito por monica 12.02.2007 ltima modificacin 13.02.2007

En este artculo veremos como asociar un control OCX que muestra un calendario a un campo, mediante el cual podremos introducir una fecha en nuestros formularios con tan slo hacer click en dicho calendario.

Una manera para Asociar un calendario a un campo o a un documento o plantilla de Word, o tablas es creando un Userform de Visual Basic Word:

Para ello os dejo estos pasos a modo de realizacin de nuestro calendario:

1Abrimos visual Basic [Alt+F11].

2Men Insertar > UserForm

Imagen que nos aparece:

3. Nos vamos a Men Herramientas > y clic en Controles adicionales

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

La imagen que nos aparece es la siguiente:

Ah dependiendo del office que utilicemos marcaremos [Calendar Control 10.0 si es office 2002, Calendar Control 11.0 si es office 2003, dependiendo del office macaremos el nuestro] y le damos a aceptar.

NOTA: SI NO TENEMOS NINGUN CONTROL LLAMADO CALENDAR DIRIGANSE A ESTA WEB O DEJEN UN COMENTARIO EN NUESTRO FORO DE OFFICE J PARA OFRECERLES EL ARCHIVO NECESARIO DEPENDIENDO DEL OFFICE INTALADO.

Una vez hecho esto veremos que se nos ha aadido un control nuevo en el cuadro de herramientas como muestra la imagen siguiente:

Ahora agregaremos el calendario al Userform de la siguiente manera:

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

Clic en el nuevo control [rodeado con un crculo rojo en la imagen] y veremos que el puntero del ratn se nos ha convertido como en la imagen siguiente:

Pues bien hacemos clic en el formulario y sin soltar el click del ratn arrastramos hasta ponerlo a una medida que nosotros queramos visualizar, [ya veris que va cogiendo forma y arreglamos el userform1 y el calendario al tamao deseado. [Con un click en cualquier parte del userform1 ya queda seleccionado al igual que con un click en cualquier parte del calendario] y Por ejemplo nos quedara algo as:

Bien ahora vamos a cambiar un poco la imagen de nuestro calendario, empezaremos por cambiar el nombre de Userform1 por ejemplo por << Calendario >> para ello le damos un click en nuestro formulario para seleccionarlo [en la imagen se ve que esta seleccionado nuestro Form, dndole al la barra del titulo ya queda seleccionado] y as ver sus propiedades como en la imagen:

Esas son las propiedades del Userform1 y podremos modificar su color, tamao, etc...., como solo vamos a ver el calendario pues solo va ha hacernos falta cambiar su nombre para ello donde dice Caption sealado arriba en la imagen, borramos y a mano ponemos Calendario. [Veremos que a la vez que escribimos tambin cambia el titulo del userform1 J ]

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

Para cambiar las propiedades del calendario vamos al deplegable [arriba sealado en circulo azul] y un click en donde dice Calendar1 calendar y veremos que nos ha cambiado esa imagen a las propiedades del Calendario.

Desde esas propiedades podemos cambiar el color [sealado arriba en imagen] y tambin podemos cambiar el tipo de letra y vista de los nmeros etc..... pero eso es mejor que lo toquis vosotros para poder as experimentar mejor

Una vez tenemos hecho esto, vamos ahora a crear el cdigo para ello:

Un clic con el ratn en donde dice Userform1 vase imagen:

Y le damos a clic derecho del ratn y clic en >> Ver cdigo >> :
http://www.fermu.com _PDF_POWERED _PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

En la ventana de cdigo que se nos abre ah pondremos el cdigo siguiente:

&lsquo;---------------------------------------------------------

Private Sub Calendar1_Click()

'insertar fecha en posicin cursor y cerrar formulario.

Selection.Text = Format(Calendar1.Value, "dd mmmm yyyy")

Selection.MoveRight Unit:=wdCharacter, Count:=1

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

Unload Me

End Sub

Private Sub UserForm_Initialize()

'Evalua el Canlendario

If IsDate(Selection.Text) Then

Calendar1.Value = DateValue(Selection.Text)

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

Else

Calendar1.Value = Date

End If

End Sub

&lsquo;--------------------------------------------------------------------------------

Una vez hecho esto nos vamos a ThisDocument para poner el siguiente cdigo el procedimiento es igual que el anterior:

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

Y en la ventana que se nos abre colocaremos el siguiente cdigo:

Y en la ventana que se nos abre colocaremos el siguiente cdigo:

&lsquo;--------------------------------------------------------------------------------

Private Sub CommandButton1_Click()

' crear una nueva barra de comandos

Dim MiBarra As CommandBar

Dim Menu As CommandBarPopup

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

' creacion de la nueva barra de comandos

Set MiBarra = Application.CommandBars.Add("NombreBarra", msoBarTop, False, True)

With MiBarra

.Protection = msoBarNoChangeDock

End With

' agrega un men a la nueva barra

Set Menu = MiBarra.Controls.Add(msoControlPopup, , , , True)

With Menu

.Caption = "&Calendario" ' lo que se muestra, subrayado la R


http://www.fermu.com _PDF_POWERED _PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

End With

' agrega un item al men

With Menu.Controls.Add(msoControlButton, 1, , , True)

.Caption = "Insertar Fecha" ' lo que se muestra, subrayado la t

.OnAction = "Abrir_Calendario" 'llamo a la macro que me ubica all

.FaceId = 1033

End With

With Menu.Controls.Add(msoControlButton, 1, , , True)

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

.Caption = "Eliminar este Menu" ' lo que se muestra, subrayado la t

.OnAction = "Quita_Barra" 'llamo a la macro que me ubica all

.FaceId = 1035

End With

MiBarra.Visible = True ' muestro la barra personalizada

Set Menu = Nothing

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

Set MiBarra = Nothing

End Sub

Sub Quita_Barra()

Application.CommandBars("NombreBarra").Delete

End Sub

Sub Abrir_Calendario()

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

UserForm1.Show

End Sub

Private Sub Document_Open()

Dim BotonA, BotonB, BotonC As CommandBarControl

'agregar a menu contextual derecho para cualquier documento normal

Set BotonA = Application.CommandBars("Text").Controls.Add


http://www.fermu.com _PDF_POWERED _PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

'Propiedades

With BotonA

.Caption = "Calendario"

.FaceId = 351

.Style = msoButtonIconAndCaption

.OnAction = "Abrir_Calendario"

.BeginGroup = True

End With
http://www.fermu.com _PDF_POWERED _PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

'Agregar a menu contextual para un documento con campos de formulario

Set BotonB = Application.CommandBars("Form Fields").Controls.Add

With BotonB

.Caption = "Calendario"

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

.FaceId = 351

.Style = msoButtonIconAndCaption

.OnAction = "Abrir_Calendario"

.BeginGroup = True

End With

'Agregar a menu contextual para un documento con Tablas

Set BotonC = Application.CommandBars("Table Text").Controls.Add


http://www.fermu.com _PDF_POWERED _PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

With BotonC

.Caption = "Calendario"

.FaceId = 351

.Style = msoButtonIconAndCaption

.OnAction = "Abrir_Calendario"

.BeginGroup = True

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

End With

Set BotonA = Nothing

Set BotonB = Nothing

Set BotonC = Nothing

End Sub

Private Sub Document_Close()

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

'Borrar botones del menu contextual a la salida del documento

Application.CommandBars("Text").Controls("Calendario").Delete

Application.CommandBars("Form Fields").Controls("Calendario").Delete

Application.CommandBars("Table Text").Controls("Calendario").Delete

End Sub

&lsquo;--------------------------------------------------------------------------------------------http://www.fermu.com _PDF_POWERED _PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

Cerramos visual Basic de Word y ya podemos probar nuestro cdigo, para una mayor visualizacin hemos dejado un archivo que os podis descargar de aqu

Anotacin

Aqu podemos variar la manera en que queramos que se visualice nuestra fecha

Private Sub Calendar1_Click()

'insertar fecha en posicin cursor y cerrar formulario.

Selection.Text = Format(Calendar1.Value, "dd mmmm yyyy")

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

Selection.MoveRight Unit:=wdCharacter, Count:=1

Unload Me

End Sub

Exactamente esta lnea de cdigo:

Selection.Text = Format(Calendar1.Value, "dd mmmm yyyy")

Si ponemos:

"dd mmmm yyyy" nos pondr >>> 11 febrero 2007

"dd-mm-yy" nos pondr >>> 11-02-07

"dd/mm/yy" nos pondr >>> 11/02/07

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

Fermu Website

"dd-mmmm-yy" nos pondr >>> 11-febrero-07

Y as con todas las variaciones, y para cualquier duda por aqu andar

En nuestra seccin de descargas teneis un ejemplo de formulario con todo lo que os hemos explicado en est articulo

Un abrazo!

Mnica

http://www.fermu.com

_PDF_POWERED

_PDF_GENERATED 13 February, 2007, 20:40

You might also like