如何使用 vb.net - VB.NET、Outlook 2013 在我的 Outlook 中创建 top-level 文件夹

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

正如标题所说,我正在尝试在我的 Outlook 中创建一个 top-level 文件夹,但我没有成功。我已经阅读了几个教程和代码片段,但似乎没有一个是成功的。

所以现在我有这段代码可以在收件箱文件夹下创建一个文件夹:

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

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

问题是,我怎样才能创建相同的文件夹,然后作为 top-level 文件夹而不是作为收件箱文件夹的 sub-folder。

我已经尝试这样做了:

objFolder.Folders.Add("Some folder") 但这没有用。

存储顶级文件夹(导航窗格中的根节点)。如果您需要在配置文件中添加新商店,可以使用 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 获取更多信息。

如果您需要创建顶级文件夹(与收件箱等标准文件夹处于同一级别),您可以获得收件箱或任何其他默认文件夹的 Parent 文件夹对象并在那里添加一个新文件夹。例如:

  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)

此外,您可能会发现商店 class 的 GetRootFolder 方法很有帮助。它 returns 一个 Folder 对象,表示商店的根级文件夹。您可以使用 GetRootFolder 方法枚举 Store 根文件夹的子文件夹。与包含当前配置文件中所有商店的所有文件夹的 NameSpace.Folders 不同,Store.GetRootFolder.Folders 允许您枚举当前配置文件中给定商店对象的所有文件夹。

 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
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