C#学习教程:如何设置Outlook文件夹的自定义图标?分享


如何设置Outlook文件夹的自定义图标?

有没有办法使用Outlook对象模型设置Outlook文件夹或子文件夹的自定义图标?

从Outlook 2010开始,您可以使用MAPIFolder.SetCUstomIcon ,如上所述。

我最近遇到了同样的挑战,并在Change Outlook文件夹颜色中找到了一小段VBA代码? :

joelandre 2015年1月12日晚上9:13

  1. 将文件icons.zip解压缩到C: icons
  2. 将下面的代码定义为Visual Basic宏
  3. 根据您的需要调整ColorizeOutlookFolders函数Text

     Function GetFolder(ByVal FolderPath As String) As Outlook.folder ' Returns an Outlook folder object basing on the folder path ' Dim TempFolder As Outlook.folder Dim FoldersArray As Variant Dim i As Integer On Error GoTo GetFolder_Error 'Remove Leading slashes in the folder path If Left(FolderPath, 2) = "\" Then FolderPath = Right(FolderPath, Len(FolderPath) - 2) End If 'Convert folderpath to array FoldersArray = Split(FolderPath, "") Set TempFolder = Application.Session.Folders.Item(FoldersArray(0)) If Not TempFolder Is Nothing Then For i = 1 To UBound(FoldersArray, 1) Dim SubFolders As Outlook.Folders Set SubFolders = TempFolder.Folders Set TempFolder = SubFolders.Item(FoldersArray(i)) If TempFolder Is Nothing Then Set GetFolder = Nothing End If Next End If 'Return the TempFolder Set GetFolder = TempFolder Exit Function GetFolder_Error: Set GetFolder = Nothing Exit Function End Function Sub ColorizeOneFolder(FolderPath As String, FolderColour As String) Dim myPic As IPictureDisp Dim folder As Outlook.folder Set folder = GetFolder(FolderPath) Set myPic = LoadPicture("C:icons" + FolderColour + ".ico") If Not (folder Is Nothing) Then ' set a custom icon to the folder folder.SetCustomIcon myPic 'Debug.Print "setting colour to " + FolderPath + " as " + FolderColour End If End Sub Sub ColorizeFolderAndSubFolders(strFolderPath As String, strFolderColour As String) ' this procedure colorizes the foler given by strFolderPath and all subfolfers Dim olProjectRootFolder As Outlook.folder Set olProjectRootFolder = GetFolder(strFolderPath) Dim i As Long Dim olNewFolder As Outlook.MAPIFolder Dim olTempFolder As Outlook.MAPIFolder Dim strTempFolderPath As String ' colorize folder Call ColorizeOneFolder(strFolderPath, strFolderColour) ' Loop through the items in the current folder. For i = olProjectRootFolder.Folders.Count To 1 Step -1 Set olTempFolder = olProjectRootFolder.Folders(i) strTempFolderPath = olTempFolder.FolderPath 'prints the folder path and name in the VB Editor's Immediate window 'Debug.Print sTempFolderPath ' colorize folder Call ColorizeOneFolder(strTempFolderPath, strFolderColour) Next For Each olNewFolder In olProjectRootFolder.Folders ' recursive call 'Debug.Print olNewFolder.FolderPath Call ColorizeFolderAndSubFolders(olNewFolder.FolderPath, strFolderColour) Next End Sub Sub ColorizeOutlookFolders() Call ColorizeFolderAndSubFolders("\PersonalDocuments00-Mgmt-CH100-People", "blue") Call ColorizeFolderAndSubFolders("\PersonalDocuments00-Mgmt-CH200-Projects","red") Call ColorizeFolderAndSubFolders("\PersonalDocuments00-Mgmt-CH500-Meeting", "green") Call ColorizeFolderAndSubFolders("\PersonalDocuments00-Mgmt-CH800-Product", "magenta") Call ColorizeFolderAndSubFolders("\PersonalDocuments00-Mgmt-CH600-Departments", "grey") Call ColorizeFolderAndSubFolders("\Mailbox - Dan WilsonInboxCustomers", "grey") End Sub 
  4. 在对象ThisOutlookSession中,定义以下函数:

     Private Sub Application_Startup() ColorizeOutlookFolders End Sub 

为了不对子文件夹着色,可以使用ColorizeOneFolder函数而不是ColorizeFolderAndSubFolders,例如

 Sub ColorizeOutlookFolders() Call ColorizeOneFolder ("\PersonalDocuments00-Mgmt-CH100-People", "blue") Call ColorizeOneFolder ("\PersonalDocuments00-Mgmt-CH200-Projects", "red") Call ColorizeOneFolder ("\PersonalDocuments00-Mgmt-CH500-Meeting", "green") Call ColorizeOneFolder ("\PersonalDocuments00-Mgmt-CH800-Product", "magenta") Call ColorizeOneFolder ("\PersonalDocuments00-Mgmt-CH600-Departments", "grey") Call ColorizeOneFolder ("\Mailbox - Dan WilsonInboxCustomers", "grey") End Sub 

在文件夹之间移动子文件夹时,它们应保留其颜色,直到下次重新启动Outlook。

据我所知,这在Outlook 2007中是不可能的。

在Outlook 2010中可以使用MAPIFolder.SetCustomIcon 。 有关详细信息,请参阅MSDN: http : //msdn.microsoft.com/en-us/library/ff184775.aspx

在以下MSDN网页上切换2010和2007之间的SetCustomIcon方法列表仅显示2010的SetCustomIcon方法: http : //msdn.microsoft.com/en-us/library/bb645002.aspx

上述就是C#学习教程:如何设置Outlook文件夹的自定义图标?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031845.html

发表评论

邮箱地址不会被公开。 必填项已用*标注