我负责清理我们公司位于 Exchange Server 2003 上的联系人数据库。问题在于,这个联系人数据库在过去几年中一直被忽视,现在有点混乱。
我的问题是,我有一个名为“鲍勃史密斯”的人,鲍勃被列在多个类别中,“学生”和“学生”。
我真的很想从鲍勃和其他具有相同类别的人中删除“学生”类别。
我的问题是,有没有一种简单的方法可以编辑 Exchange 服务器上联系人的主类别列表?
我觉得我在这里遗漏了一些简单的东西,因为如果我使用我使用的类别来组织电子邮件,这很容易做到,但我似乎找不到针对服务器上的类别进行组织的正确方法。
我正在尝试通过 Outlook 2007 和 Exchange 2003 进行工作。
任何见解都会非常有帮助,因为我真的不想手动更改 8000 多个联系人。
答案1
我的问题是,有没有一种简单的方法可以编辑 Exchange 服务器上联系人的主类别列表?
主类别列表是针对每个用户的设置。它不存储在 Exchange 服务器上。
在 Outlook 2003 中,它存储在注册表的此位置的当前用户部分中。
HKCU\Software\Microsoft\Office\11.0\Outlook\Categories\MasterList
如果您希望网络上的所有用户都拥有相同的类别,您可以导出注册表的该部分,然后将其导入其他用户。不幸的是,您还将覆盖他们的所有类别。由于该密钥的格式,将类别合并在一起并不容易。它是一个 REG_BINARY,其中包含以分号分隔的 unicode 类别列表。
每个联系人记录都有一个字段,其中包含与该联系人关联的类别列表。没有简单的方法可以单击一个按钮并从所有联系人记录中删除给定类别。您可以构建一个 VBA 脚本,通过循环遍历所有记录并删除该类别来执行此操作。
将所有联系人导出为其他格式,根据需要进行操作,然后重新导入可能会更容易。
答案2
很遗憾,从 Ben 使用的 Outlook 2007 版本开始,如果邮箱是默认存储,则主类别列表 (mcl) 存储在服务器上。无论是否有 Exchange 服务器,注册表都不再使用。
但是,对于从联系人中删除类别,mcl 存储在哪里并不重要。这是因为类别名称存储了两次,一次在 mcl 中,一次与项目一起存储。因此,删除一个不会影响其他。
如果您想重新组织您的类别,类别管理器是一个很有价值的工具(参见:http://www.vboffice.net/product.html?lang=en)可帮助您查找和编辑“学生”和“学生”等双重类别。
清理完 mcl 后,该工具还可以将其分发给其他客户端,无论 Outlook 是什么版本。您可以自行决定是覆盖现有 mcl 还是将其与您的 mcl 合并。
答案3
我制作了一个简单的 AutoIt 脚本来部署类别
#include <File.au3>
#include <Array.au3>
$sFilePath="Kategorien.csv"
$outlook = ObjCreate("Outlook.Application")
If Not @error Then
$ns = $outlook.getnamespace("Mapi").categories
Local $aArray[1][3]
_FileReadToArray ( @ScriptDir&"\"&$sFilePath,$aArray, 2,";")
$Anzahl=UBound ($aArray) -1
ProgressOn("Outlook Kategorieimport", $sFilePath &" wird Importiert ", "0%")
For $i = 1 to $Anzahl
$aArraySub=$aArray[$i]
$Name=StringReplace($aArraySub[0],'"','')
$Color=StringReplace($aArraySub[1],'"','')
$ShortcutKey=StringReplace($aArraySub[2],'"','')
$ns.add($Name,$Color,$ShortcutKey)
$pc=100/$Anzahl * $i
ProgressSet(round($pc,0), round($pc,0) & "%")
Sleep(500)
Next
ProgressSet(100, "Fertig", "Ferig")
Sleep(500)
ProgressOff()
Else
EndIf
导入文件:Kategorien.csv
"Name";"Color";"ShortcutKey"
"Kategoriename";"1";"0"