How to: Open and Display the Contents of an iCalendar File
This example shows how to open and display the contents of an iCalendar file, depending on whether the file contains a single or recurrent appointment, or the file contains a group of appointments.
This code sample first tries to use the OpenSharedItem method of the NameSpace object to open the iCalendar file as a single-appointment iCalendar file. If it succeeds, it will display the appointment item details in an inspector window. However, it will not copy the item to the default store. If the sample cannot open the file as a single-appointment iCalendar file, then it will use the OpenSharedFolder method of the NameSpace object to attempt to import the contents as a new calendar in the default store. If it succeeds in importing, then it will display the calendar in an explorer window.
This code sample makes use of the OutlookItem helper class, defined in How to: Create a Helper Class to Access Common Outlook Item Members, to conveniently call the OutlookItem.Display method to display the appointment item without having to first cast the item.
If you use Visual Studio to test this code example, you must first add a reference to the Microsoft Outlook 15.0 Object Library component and specify the Outlook variable when you import the Microsoft.Office.Interop.Outlook namespace. The Imports or using statement must not occur directly before the functions in the code example but must be added before the public Class declaration. The following lines of code show how to do the import and assignment in Visual Basic and C#.
Private Sub OpenICalendarFile(ByVal fileName As String) If String.IsNullOrEmpty(fileName) Then Throw New ArgumentException(_ "Parameter must contain a value.", "exportFileName") End If If Not File.Exists(fileName) Then Throw New FileNotFoundException(fileName) End If '' First try to open the icalendar file as an appointment '' (not a calendar folder). Dim item As Object = Nothing Try item = Application.Session.OpenSharedItem(fileName) Catch End Try If Not item Is Nothing Then '' Display the item Dim olItem As OutlookItem = New OutlookItem(item) olItem.Display() Return End If '' If unsucessful in opening it as an item, '' try opening it as a folder Dim importedFolder As Outlook.Folder = Nothing Try importedFolder = TryCast( _ Application.Session.OpenSharedFolder(fileName), _ Outlook.Folder) Catch End Try '' If sucessful, open the folder in a new explorer window If Not importedFolder Is Nothing Then Dim explorer As Outlook.Explorer = _ Application.Explorers.Add( _ importedFolder, _ Outlook.OlFolderDisplayMode.olFolderDisplayNormal) explorer.Display() End If End Sub