Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

cita en calendarios personalizados por vba (excel o word)

423 views
Skip to first unread message

H�ctor Miguel

unread,
Jun 9, 2009, 2:24:50 AM6/9/09
to
hola, a todos !

esta consulta es en relacion con otra consulta en el grupo de excel :D
como se puede (o debe) establecer una cita en calendarios personalizados por vba ?

he llegado incluso a establecer un "determinado" calendario como la vista actual en el explorador de OL
pero las citas se "quedan" siempre en el mismo calendario (aparentemente el primero en el indice o el "original" ?)
y no he logrado "pescar" algun articulo/tema/conversacion/... que sea "amigable" explicando este tipo de procedimientos (vba)

expongo al final uno de los codigos utilizados (hasta el momento) usando "late binding" (por si las dudas)

gracias anticipadas,
hector.

Sub Agendar_en_miCalendario()
Dim miOutlook As Object, miCita As Object, Fila As Integer, uFila As Integer
uFila = Range("a65536").End(xlUp).Row
On Error GoTo Crear
Set miOutlook = GetObject(, "outlook.application")
If Err = 0 Then GoTo Creado
Crear:
Err.Clear
Set miOutlook = CreateObject("outlook.application")
Creado:
On Error GoTo 0
For Fila = 2 To uFila
' en la col-B se tienen los nombres de los calendarios
Set miOutlook.ActiveExplorer.CurrentFolder = _
miOutlook.Session.GetDefaultFolder(9).Folders.Item(Range("b" & Fila).Text)
Set miCita = miOutlook.CreateItem(1)
' en la col-A se tienen los identificadores del recordatorio/cita
miCita.Subject = "Vencimiento de: " & Range("a" & Fila).Value
' en la col-C se tienen las fechas de los vencimientos
miCita.Start = "09:00 am" & Format(Range("c" & Fila).Value, "mm/dd/yyyy")
miCita.End = "9:15 am" & Format(Range("c" & Fila).Value, "mm/dd/yyyy")
miCita.ReminderMinutesBeforeStart = 0 ' se deja en 0 para que avise en ese momento
miCita.ReminderPlaySound = True
miCita.Save
Next
' miOutlook.Quit
Set miCita = Nothing
Set miOutlook = Nothing
End Sub


H�ctor Miguel

unread,
Jun 11, 2009, 12:06:40 AM6/11/09
to
hola, a todos !

por cortesia de Ken Slovak y Michael Bauer resulta lo siguiente:

el metodo CreateItem utiliza la carpeta principal del tipo de objeto (correo, cita, etc.)
por lo que para establecer citas (o items) en una "determinada" (sub)carpeta, seria necesario...
- crear el objeto en la carpeta principal (segun su tipo) y despues "moverlo" a la (sub)carpeta especifica (CreateItem)
- crear el objeto en la (sub)carpeta determinada por la coleccion <carpeta>.Items.Add(tipo) (NO por el metodo CreateItem)

entonces, del codigo de mis intentos, los cambios (usando "late binding") son...

de esto: (declaracion de las variables)


Dim miOutlook As Object, miCita As Object, Fila As Integer, uFila As Integer

a esto:
Dim miOutlook As Object, miCalendario As Object, miCita As Object, _


Fila As Integer, uFila As Integer

y de esto (para la determinacion y obtencion de la (sub)carpeta "especifica"):


Set miOutlook.ActiveExplorer.CurrentFolder = _
miOutlook.Session.GetDefaultFolder(9).Folders.Item(Range("b" & Fila).Text)
Set miCita = miOutlook.CreateItem(1)

a esto:
Set miCalendario = miOutlook.Session.GetDefaultFolder(9).Folders.Item(Range("b" & Fila).Text)
Set miCita = miCalendario.Items.Add(1)

saludos,
hector.

__ OP __

0 new messages