[AccessD] Picking Alternate Calendar

Max Wanadoo max.wanadoo at gmail.com
Fri Mar 12 04:33:35 CST 2010


Rocky, you could try the code below. Remember this is Outlook and not
Exchange Server but it might do the trick.

Max

Private Sub sCalendar()
    Dim ol As Outlook.Application
    Dim onMAPI As NameSpace
    'Dim ofMyOutlook As MAPIFolder
    Dim ofFolder As MAPIFolder
    Dim ofCalendar As MAPIFolder
    Dim myCalendar As MAPIFolder
    Dim myItem As Object
    Dim strCalendarName As String
    Dim myRequiredAttendee As Outlook.Recipient
    Dim myoptionalAttendee As Outlook.Recipient
    Dim myResourceAttendee As Outlook.Recipient
    Dim ifor As Integer

    Set ol = New Outlook.Application
    Set onMAPI = ol.GetNamespace("MAPI")
    'On Error Resume Next

    'Debug.Print onMAPI.Class
    'Debug.Print onMAPI.CurrentUser ' might be useful to get this then you
can personlise your responses to him
    ' eg.Hey Rocky,your  appointment has been made - next  time  use your
cellphone.
    'Debug.Print onMAPI.GetDefaultFolder(olFolderCalendar)

    Set ofCalendar = onMAPI.GetDefaultFolder(olFolderCalendar)
    For Each ofFolder In ofCalendar.Folders
        ' this assumes there is only ONE sub calendar but if there are more
than one,
        ' you will need to pop them up and ask which one or define it in
some way.
        strCalendarName = ofFolder.Name: Debug.Print ofFolder.Name
    Next ofFolder

    Set myCalendar = ofCalendar.Folders(strCalendarName)    ' this is the
FOUND  name
    With myCalendar
        Set myItem = myCalendar.Items.Add    '
ol.CreateItem(olAppointmentItem)
        With myItem
            .MeetingStatus = olMeeting
            .Subject = "Meeting Tomorrow BoardRoom - test from Max at
AccessD"
            .Location = "Conference Room No. 33"
            .Start = #3/13/2010 11:30:00 AM#     ' month/day/year - change
as required.
            .Duration = 90
            '
            Set myRequiredAttendee =
myItem.Recipients.Add("rockysmolin at bchacc.com")
            myRequiredAttendee.Type = olRequired
            '            Set myoptionalAttendee =
myItem.Recipients.Add("rockysmolin at bchacc.com")
            '            myoptionalAttendee.Type = olOptional
            '            Set myResourceAttendee =
myItem.Recipients.Add("rockysmolin at bchacc.com")
            '            myResourceAttendee.Type = olResource
            .Display
            'myItem.Send
        End With
    End With
End Sub
 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Rocky Smolin
Sent: Friday, March 12, 2010 5:04 AM
To: 'Access Developers discussion and problem solving'
Subject: Re: [AccessD] Picking Alternate Calendar

So it turns out that in the client's Exchange the top level folder is
"Mailbox - Jack Stone", not 'Personal Folders'.  I suppose that any user
could change the name of their top level folder.  Do you know if there is a
way to find out the name of that top level folder without prompting the user
for it?

TIA

Rocky


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Max Wanadoo
Sent: Wednesday, March 10, 2010 1:49 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Picking Alternate Calendar

Rocky:

Try this code below

Max

Private Sub sDeleteCalEvents()
    Dim strDateFrom As String, strDateTo As String
    strDateFrom = "01/01/2010"    ' mm/dd/yyyy
    strDateTo = "12/31/2010"    ' mm/dd/yyyy
    Dim ol As Outlook.Application
    Dim onMAPI As NameSpace
    Dim ofMyOutlook As MAPIFolder
    Dim ofFolder As MAPIFolder
    Dim ofCalendar As MAPIFolder
    Dim myItem As Object
    Dim myCalendar As Object
    Dim strCalendarName As String
    ' this is the variable which can be passed in as the name of the  new
(non-default calendar)
    ' because it is non-system calendar we cannot use ol.creatitem() but
have to use .items.add
    strCalendarName = "My Calendar"
    Set ol = New Outlook.Application
    Dim ifor As Integer
    Set onMAPI = ol.GetNamespace("MAPI")
    On Error Resume Next
    Set ofMyOutlook = onMAPI.Folders("Personal Folders")    '  but I renamed
mine
    If Err.Number <> 0 Then
        MsgBox "The Outlook 'Personal Folder' cannot be found. Have you
renamed it to something else perhaps?."
        Exit Sub
    End If
    Set ofCalendar = ofMyOutlook.Folders("Calendar")    ' this is the
normal  name
    ' go though the folders inside the calendar folder and see if we can
find the user-defined calendar
    For ifor = 1 To ofCalendar.Folders.Count
        ' Debug.Print ofCalendar.Folders(ifor), ifor
        If ofCalendar.Folders(ifor) = strCalendarName Then
            Set myCalendar = ofCalendar.Folders(ifor)    ' Got it
            ifor = ofCalendar.Folders.Count    ' jump  out
        End If
    Next ifor

    Debug.Print myCalendar.Items.Count

    For ifor = myCalendar.Items.Count To 1 Step -1 ' work backwards
        Debug.Print Format(myCalendar.Items(ifor).Start, "mm/dd/yyyy"), '
trailing comma
        If Format(myCalendar.Items(ifor).Start, "mm/dd/yyyy") >= strDateFrom
And Format(myCalendar.Items(ifor).Start, "mm/dd/yyyy") <= strDateTo Then
            Debug.Print "Deleted"
            myCalendar.Items(ifor).Delete
        Else
            Debug.Print "Not deleted"
        End If
    Next ifor
End Sub

Private Sub sCalendar()
    Dim ol As Outlook.Application
    Dim onMAPI As NameSpace
    Dim ofMyOutlook As MAPIFolder
    Dim ofFolder As MAPIFolder
    Dim ofCalendar As MAPIFolder
    Dim myItem As Object
    Dim myCalendar As Object
    Dim strCalendarName As String
    Dim myRequiredAttendee As Outlook.Recipient
    Dim myoptionalAttendee As Outlook.Recipient
    Dim myResourceAttendee As Outlook.Recipient
    ' this is the variable which can be passed in as the name of the  new
(non-default calendar)
    ' because it is non-system calendar we cannot use ol.creatitem() but
have to use .items.add
    strCalendarName = "My Calendar"
    Set ol = New Outlook.Application
    Dim ifor As Integer
    Set onMAPI = ol.GetNamespace("MAPI")
    On Error Resume Next
    Set ofMyOutlook = onMAPI.Folders("Personal Folders")    '  but I renamed
mine
    If Err.Number <> 0 Then
        MsgBox "The Outlook 'Personal Folder' cannot be found. Have you
renamed it to something else perhaps?."
        Exit Sub
    End If
    Set ofCalendar = ofMyOutlook.Folders("Calendar")    ' this is the
normal  name
    ' go though the folders inside the calendar folder and see if we can
find the user-defined calendar
    For ifor = 1 To ofCalendar.Folders.Count
        ' Debug.Print ofCalendar.Folders(ifor), ifor
        If ofCalendar.Folders(ifor) = strCalendarName Then
            Set myCalendar = ofCalendar.Folders(ifor)    ' Got it
            ifor = ofCalendar.Folders.Count    ' jump  out
        End If
    Next ifor
    If ifor > ofCalendar.Folders.Count + 1 Or ofCalendar.Folders.Count = 0
Then
        MsgBox "The user caledar (" & strCalendarName & ") does not appear
as a sub folder of Calendar.  Press OK and I will created it for you."
        Set ofFolder = onMAPI.GetDefaultFolder(olFolderCalendar)
        Set myCalendar = ofFolder.Folders.Add(strCalendarName)
    End If
    ' might need  ClickYes installed if you require to send without user
viewing first.
    With myCalendar
        Set myItem = myCalendar.Items.Add    '
ol.CreateItem(olAppointmentItem)
        With myItem
            .MeetingStatus = olMeeting
            .Subject = "Meeting Tomorrow BoardRoom - test from Max at
AccessD"
            .Location = "Conference Room No. 33"
            .Start = #3/10/2010 2:30:00 PM#     ' month/day/year - change as
required.
            .Duration = 90
            '
            Set myRequiredAttendee = myItem.Recipients.Add("
rockysmolin at bchacc.com")
            myRequiredAttendee.Type = olRequired
            Set myoptionalAttendee = myItem.Recipients.Add("
rockysmolin at bchacc.com")
            myoptionalAttendee.Type = olOptional
            Set myResourceAttendee = myItem.Recipients.Add("
rockysmolin at bchacc.com")
            myResourceAttendee.Type = olResource
            '.Display
            myItem.Send
        End With
    End With
End Sub
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.733 / Virus Database: 270.14.129/2605 - Release Date: 03/08/10
23:33:00

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list