Solved

Using VBA to update a shared calendar

Posted on 2009-07-08
8
846 Views
Last Modified: 2013-12-25
This article from MSDN talks about how to automate Outlook using VB:
http://support.microsoft.com/kb/220595
But is it possible to use VB to add calendar events on a shared calendar on an Exchange server as opposed to the user's default Outlook calendar? If so, how would one set a reference to a calendar in a location such as "https://email.institution.edu/public/Sub%20Folder/?Cmd=contents"?
0
Comment
Question by:NashVegas
  • 4
  • 4
8 Comments
 
LVL 19

Expert Comment

by:darbid73
ID: 24803244
does this help you

Dim objApp As Outlook.Application

    Dim objNS As Outlook.NameSpace

    Dim objFolder As Outlook.MAPIFolder

    Dim objDummy As Outlook.MailItem

    Dim objRecip As Outlook.Recipient

    Dim objInvite As Outlook.Recipient

    Dim objAppt As Outlook.AppointmentItem

    Dim strMsg As String

    Dim strName As String

    On Error Resume Next

    

    ' ### name of person whose Calendar you want to use ###

    strName = "name@name.com"

    

    Set objApp = CreateObject("Outlook.Application")

    Set objNS = objApp.GetNamespace("MAPI")

    Set objRecip = objNS.CreateRecipient(strName)

    
 

    Set objFolder = objNS.GetSharedDefaultFolder(objRecip, olFolderCalendar)

        

        If Not objFolder Is Nothing Then

            Set objAppt = objFolder.Items.Add

            If Not objAppt Is Nothing Then

                With objAppt

                    .MeetingStatus = olMeetingRequest

                    .MeetingStatus = olMeeting

                    .Subject = "Donald Duck's Birthday"

                    .Start = "07/03/2009 17:00:00"

                    .Body = "YOU ARE A WINNER"

                    .Duration = 1400

                    .Location = "France Paris"

                    .ReminderMinutesBeforeStart = 60

                    .BusyStatus = olTentative

                    .RequiredAttendees = "invitee@name.com"

                    .Display

                End With

            End If

        End If

        

        

    Set objApp = Nothing

    Set objNS = Nothing

    Set objFolder = Nothing

    Set objDummy = Nothing

    Set objRecip = Nothing

    Set objAppt = Nothing

Open in new window

0
 

Author Comment

by:NashVegas
ID: 24803359
Thank you for the prompt response. It looks to me that this code provides a way to send an appointment item to a specific user which is something I will definitely have a use for, but not the solution in this particular case. Unless the URL for the shared calendar can be used in place of "name@name.com". Is there a different library function similar to "CreateRecipient" that could be used to point to the shared calendar rather than an indiviual user's calendar?
0
 
LVL 19

Expert Comment

by:darbid73
ID: 24803459
I must admit that I am not familiar with a URL shared calendar but the code I gave you will definately allow you to enter appointments on a shared calendar.

Note here...

Set objFolder = objNS.GetSharedDefaultFolder(objRecip, olFolderCalendar)

The key to this is for you to get the right name of the shared folder.
0
 

Author Comment

by:NashVegas
ID: 24803659
So in this scenario, a specific user would have to create a calendar and share it with the other users who need access. Then "name@name.com" would be the calendar owner's email address and "GetSharedDefaultFolder" would reference the specific calendar they are sharing, correct? I think this might be okay (I'll have to run it by the users). But unless I'm missing something, I don't see where in the code the name of the shared calendar would be set. I would expect "GetSharedDefaultFolder" to mean "the default calendar for the specified user". So how would I define which of the user's calendars is the calendar to which I want to add an appointment?
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 19

Expert Comment

by:darbid73
ID: 24803963
I have only worked with shared calendars, where USER_A has given USER_B rights to their calendar.  USER_B then has multiple calendars which they can see - It appears in the "Other Calendars" section.  I have not seen your URL calendar but I imagine that if a user can manually add an item to this URL calendar then it must be a calendar folder on this users outlook - it might even appear as an "Other Calendar".

But your key to getting a users calendar is by the Recipient.

Your code will fail if the USER_B tries to get USER_A's calendar and USER_A has not allowed it.
0
 

Author Comment

by:NashVegas
ID: 24804125
I am certain that in our case, USER_A will not want these calendar events cluttering their default calendar. If USER_A created a second calendar called "SharedCalendar" and gave other users permissions to view that calendar, then that is the only way this solution might be acceptable.
0
 
LVL 19

Accepted Solution

by:
darbid73 earned 500 total points
ID: 24804339
I must say again I am both guessing and cannot not test your situation as I do not have it.  But I would think that there is no difference to the example I gave you and your case.  It is just that USER_A in your case is not also the personal calendar of anyone.

In your case USER_B (and all other users) can see this calendar right, and can manually add appointments?

If yes I am guessing that this calendar has a name.  Once you have this name you can get this folder by its name.

 
0
 

Author Comment

by:NashVegas
ID: 24804959
http://www.experts-exchange.com/Microsoft/Development/MS_Access/Q_23972317.html?sfQueryTermInfo=1+appoint+calendar+set

I found another thread that answered my question. I had searched before but somehow could not find this until now. I'll give you credit for helping me get on the right path. Thanks,
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Utilizing an array to gracefully append to a list of EmailAddresses
Following basic email etiquette rules will help you write a professional email and achieve a good, lasting impression with your contacts.
In this video we show how to create a Shared Mailbox in Exchange 2013. We show this process by using the Exchange Admin Center. Log into Exchange Admin Center.: First we need to log into the Exchange Admin Center. Navigate to the Recipients >> Sha…
This Experts Exchange video Micro Tutorial shows how to tell Microsoft Office that a word is NOT spelled correctly. Microsoft Office has a built-in, main dictionary that is shared by Office apps, including Excel, Outlook, PowerPoint, and Word. When …

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now