|
En este artículo 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 sólo 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 realización de nuestro calendario:
1-
Abrimos
visual Basic [Alt+F11].
2-
Menú Insertar
> UserForm
Imagen que nos aparece:
3. Nos
vamos a Menú Herramientas > y clic en Controles adicionales
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 añadido un control nuevo en el cuadro de herramientas
como muestra la imagen siguiente:
Ahora agregaremos el
calendario al Userform de la siguiente manera:
Clic en el nuevo
control [rodeado con un círculo rojo en la imagen] y veremos que el puntero del
ratón se nos ha convertido como en la imagen siguiente:

Pues bien hacemos clic
en el formulario y sin soltar el click del ratón arrastramos hasta ponerlo a
una medida que nosotros queramos visualizar, [ya veréis que va cogiendo forma y
arreglamos el userform1 y el calendario al tamaño 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 quedaría 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, dándole 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, tamaño, etc...., como solo vamos a
ver el calendario pues solo va ha hacernos falta cambiar su nombre para ello
donde dice Caption señalado arriba en la imagen, borramos y a mano ponemos
Calendario. [Veremos que a la vez que
escribimos también cambia el titulo del userform1 J ]
Para cambiar las
propiedades del calendario vamos al deplegable [arriba señalado 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 [señalado arriba en imagen] y también podemos cambiar
el tipo de letra y vista de los números etc..... pero eso es mejor que lo toquéis
vosotros para poder así experimentar mejor
Una vez tenemos hecho
esto, vamos ahora a crear el código para ello:
Un clic con el ratón en
donde dice Userform1 véase imagen:
Y le damos a clic derecho
del ratón y clic en >> Ver código >> :
En la ventana de código
que se nos abre ahí pondremos el código siguiente:
‘---------------------------------------------------------
Private Sub
Calendar1_Click()
'insertar fecha en
posición cursor y cerrar formulario.
Selection.Text =
Format(Calendar1.Value, "dd mmmm yyyy")
Selection.MoveRight Unit:=wdCharacter, Count:=1
Unload Me
End Sub
Private Sub UserForm_Initialize()
'Evalua el Canlendario
If IsDate(Selection.Text) Then
Calendar1.Value = DateValue(Selection.Text)
Else
Calendar1.Value = Date
End If
End Sub
‘--------------------------------------------------------------------------------
Una vez hecho esto nos
vamos a ThisDocument para poner el siguiente código el procedimiento es igual
que el anterior:
Y en la ventana que se
nos abre colocaremos el siguiente código:
Y en la ventana que se
nos abre colocaremos el siguiente código:
‘--------------------------------------------------------------------------------
Private Sub CommandButton1_Click()
' crear una nueva barra
de comandos
Dim MiBarra As CommandBar
Dim Menu As CommandBarPopup
' 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
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)
.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
Set MiBarra = Nothing
End Sub
Sub Quita_Barra()
Application.CommandBars("NombreBarra").Delete
End Sub
Sub Abrir_Calendario()
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
'Propiedades
With BotonA
.Caption = "Calendario"
.FaceId = 351
.Style = msoButtonIconAndCaption
.OnAction = "Abrir_Calendario"
.BeginGroup = True
End With
'Agregar a menu contextual para un
documento con campos de formulario
Set BotonB =
Application.CommandBars("Form Fields").Controls.Add
With BotonB
.Caption = "Calendario"
.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
With BotonC
.Caption = "Calendario"
.FaceId = 351
.Style = msoButtonIconAndCaption
.OnAction = "Abrir_Calendario"
.BeginGroup = True
End With
Set BotonA = Nothing
Set BotonB = Nothing
Set BotonC = Nothing
End Sub
Private Sub
Document_Close()
'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
‘---------------------------------------------------------------------------------------------
Cerramos visual Basic de
Word y ya podemos probar nuestro código, para una mayor visualización hemos
dejado un archivo que os podéis descargar de aquí
Anotación
Aquí podemos variar la
manera en que queramos que se visualice nuestra fecha
Private Sub
Calendar1_Click()
'insertar fecha en posición
cursor y cerrar formulario.
Selection.Text =
Format(Calendar1.Value, "dd mmmm yyyy")
Selection.MoveRight Unit:=wdCharacter, Count:=1
Unload Me
End Sub
Exactamente esta línea de código:
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
"dd-mmmm-yy" nos pondrá
>>> 11-febrero-07
Y así con todas las
variaciones, y para cualquier
duda por aquí andaré
En nuestra sección de descargas teneis un ejemplo de formulario con todo lo que os hemos explicado en esté articulo
¡Un abrazo!
Mónica
Trackback(0)
 |
No se como poder instalar esta opcion. dame una manito. Gracias