How to create a top-level folder in my Outlook using vb.net - VB.NET, Outlook 2013

1.2k views Asked by At

So as the title says, I am trying to create a top-level folder in my Outlook but I haven't got any success with it. I've read several tutorials and code snippets but non of them seem to be a success.

So now i Have this piece of code which creates a folder under the Inbox folder:

Dim objFolder As Outlook.MAPIFolder
Dim objOutlook As Outlook._Application
objOutlook = New Outlook.Application()

objFolder.Folders.Add("Some folder", Outlook.OlDefaultFolders.olFolderInbox)

The question is, how can I create the same folder but then as a top-level folder instead as a sub-folder of the inbox folder.

I already tried to do it like this:

objFolder.Folders.Add("Some folder") but this didn't work.

2

There are 2 answers

0
Eugene Astafiev On BEST ANSWER

Top folders (root nodes in the navigation pane) are store. If you need to add a new store in the profile you can use the AddStoreEx method of the Namesapace class which adds a Personal Folders file (.pst) in the specified format to the current profile. See How to: Add or Remove a Store for more information.

In case if you need to create a top-level folder (at the same level with standard folders like Inbox and etc.) you can get the Parent folder object of the Inbox or any other default folder and add a new folder there. For example:

  Dim objFolder As Outlook.MAPIFolder
  Dim parentFolder as Outlook.MAPIFolder
  Dim objOutlook As Outlook._Application
  objOutlook = New Outlook.Application()

  myNamespace = objOutlook.GetNamespace("MAPI") 
  objFolder = myNamespace.GetDefaultFolder(olFolderInbox) 
  parentFolder = objFolder.Parent
  parentFolder.Folders.Add("Some folder", Outlook.OlDefaultFolders.olFolderInbox)

Also you may find the GetRootFolder method of the Store class helpful. It returns a Folder object representing the root-level folder of the Store. You can use the GetRootFolder method to enumerate the subfolders of the root folder of the Store. Unlike NameSpace.Folders which contains all folders for all stores in the current profile, Store.GetRootFolder.Folders allows you to enumerate all folders for a given Store object in the current profile.

 Sub EnumerateFoldersInStores() 
  Dim colStores As Outlook.Stores 
  Dim oStore As Outlook.Store 
  Dim oRoot As Outlook.Folder 
  On Error Resume Next 
  Set colStores = Application.Session.Stores 
  For Each oStore In colStores 
   Set oRoot = oStore.GetRootFolder 
   Debug.Print (oRoot.FolderPath) 
   EnumerateFolders oRoot 
  Next
 End Sub 

 Private Sub EnumerateFolders(ByVal oFolder As Outlook.Folder) 
  Dim folders As Outlook.folders 
  Dim Folder As Outlook.Folder 
  Dim foldercount As Integer 
  On Error Resume Next 
  Set folders = oFolder.folders 
  foldercount = folders.Count 
  'Check if there are any folders below oFolder 
  If foldercount Then 
  For Each Folder In folders 
   Debug.Print (Folder.FolderPath) 
   EnumerateFolders Folder 
  Next 
 End If
0
vellaichamy On
Private Sub CreateNewFolder()
        Dim oApp As Outlook.Application = New Outlook.Application
        Dim oNS As Outlook.NameSpace = oApp.GetNamespace("MAPI")
        Dim InboxFolder As Outlook.MAPIFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
        Dim customFolder As Outlook.MAPIFolder
        Try
            customFolder = InboxFolder.Folders.Add("Vellaichamy", Outlook _
               .OlDefaultFolders.olFolderInbox)
            InboxFolder.Folders("Authorcode").Display()
        Catch ex As Exception
            MessageBox.Show("The following error occurred: " & ex.Message)
        End Try
    End Sub