• Hello and welcome to our new forums. We upgraded our forum sites to a more robust and modern system which we hope you will enjoy. Be sure to check out your profile by clicking the button on the top right and configure your preferences, signature, time zone, avatar, etc. as you wish. If you need help with using this new forum'ware try the help link on the bottom right.

    Click here to review your account now.

Fetching a Calendar in Outlook

jwcoleman87

Well-known member
Joined
Oct 4, 2014
Messages
124
Programming Experience
Beginner
Hello all, something I thought would have been super easy, but after exhausting the google search engine I am coming up dry.

I am able to get my default calendar no problem:

Code:
Imports Microsoft.Office.Core
Imports Microsoft.Office.Interop.Outlook
Imports Microsoft.Office.Tools.Outlook
Public Class TeletrackOL
    'Handles initialization of startup variables
    Private Sub ThisAddIn_Startup() Handles Application.Startup
        Dim mpnNamespace As Outlook.NameSpace = Application.GetNamespace("MAPI")
        Dim oCalendar As Outlook.MAPIFolder = mpnNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar)
        MsgBox(oCalendar.Name)


    End Sub
End Class
But, apparently selecting a different calendar is not as straight forward and I cannot seem to figure out how to do it. I want this one:

calendar.png
I haven't found a single function that allows me to grab a calendar by name.

Even if all you can do is help me search for resources, that would be greatly appreciated!
 
Last edited:

JohnH

VB.NET Forum Moderator
Staff member
Joined
Dec 17, 2005
Messages
15,254
Location
Norway
Programming Experience
10+
It appears from my web search that you can loop through oCalendar.Folders, where each is a MAPIFolder that is a calendar.
 

jwcoleman87

Well-known member
Joined
Oct 4, 2014
Messages
124
Programming Experience
Beginner
It appears from my web search that you can loop through oCalendar.Folders, where each is a MAPIFolder that is a calendar.
Hmm, will have to try that, but it was my impression (given by the message box) you see in my original code that oCalendar was a calendar "folder", which contains calendar things in it. Not a "folder of" calendars.

The message box in my sample code returns "Calendar"

Which you can see that calendar in the image in my original post.


I think I may have found a solution online. The calendar is the default calendar for a group, and I found you can access a calendar from a group email like so:
Code:
Imports Microsoft.Office.Core
Imports Microsoft.Office.Interop.Outlook
Imports Microsoft.Office.Tools.Outlook
Public Class TeletrackOL
    'Handles initialization of startup variables
    Private Sub ThisAddIn_Startup() Handles Application.Startup
        ResolveName()
    End Sub
    Dim myNamespace As Outlook.NameSpace
    Dim myRecipient As Outlook.Recipient
    Dim CalendarFolder As Outlook.Folder


    Sub ResolveName()


        myNamespace = Application.GetNamespace("MAPI")
        myRecipient = myNamespace.CreateRecipient("**************@email.com")
        myRecipient.Resolve()
        If myRecipient.Resolved Then
            Call ShowCalendar(myNamespace, myRecipient)
        End If
    End Sub


    Sub ShowCalendar(myNamespace, myRecipient)
        Dim CalendarFolder As Outlook.Folder
        CalendarFolder = myNamespace.GetSharedDefaultFolder(myRecipient, Outlook.OlDefaultFolders.olFolderCalendar)
        CalendarFolder.Display()
    End Sub
End Class
This snippet was borrowed from something i found on google. It seems like it will work, but the issue here is that my laptop does not have admin rights at work here :(. So, this line throws an exception:

CalendarFolder = myNamespace.GetSharedDefaultFolder(myRecipient, Outlook.OlDefaultFolders.olFolderCalendar)

System.Runtime.InteropServices.COMException: 'The operation failed because of a registry or installation problem. Restart Outlook and try again. If the problem persists, reinstall.'

Looks like I gotta sneak around the man at work to get some admin rights again.

I'm pretty sure its admin because when I build I receive this error:



Error Cannot register type library "C:\Users\Jonathan.Coleman\OneDrive - Teleplan International N.V\Source\Teletrack\TeletrackOL\bin\Release\TeletrackOL.tlb". Error accessing the OLE registry. (Exception from HRESULT: 0x8002801C (TYPE_E_REGISTRYACCESS)) TeletrackOL
 

JohnH

VB.NET Forum Moderator
Staff member
Joined
Dec 17, 2005
Messages
15,254
Location
Norway
Programming Experience
10+
oCalendar was a calendar "folder", which contains calendar things in it. Not a "folder of" calendars.
I just found it online somewhere, it is common how things are organized in Outlook, much like in a file system. It is also possible to put a calendar in default calendars parent folder, which is the root personal folder I think.
 
Top Bottom