Мне поручили очистить базу данных контактов наших компаний, установленную на сервере Exchange 2003. Проблема в том, что этой базой данных контактов не уделялось должного внимания последние пару лет, и теперь она немного беспорядочная.
Моя проблема в том, что я сказал человека по имени «Боб Смит», а Боб указан в нескольких категориях: «Студенты» и «Студенты».
Я действительно хотел бы удалить категорию «Студент» из Боба и всех остальных, кто имеет такую же категорию.
Мой вопрос: есть ли простой способ редактировать списки основных категорий для контактов на сервере обмена?
Я чувствую, что мне здесь не хватает чего-то простого, поскольку, если бы я играл с категориями, которые я использую, то есть организовать электронную почту, это сделать очень легко, но я не могу найти правильный способ сделать это для категорий, которые на сервере.
Я пытаюсь работать через Outlook 2007 и Exchange 2003.
Любая информация была бы очень полезной, поскольку я действительно не хочу менять 8000+ контактов вручную.
У меня вопрос, есть ли простой способ редактировать списки основных категорий для контактов на сервере обмена?
Список основных категорий настраивается для каждого пользователя. Он не хранится на сервере Exchange.
В Outlook 2003 он хранится в этой части реестра в текущей пользовательской части реестра.
HKCU\Software\Microsoft\Office\11.0\Outlook\Categories\MasterList
Если вы хотите, чтобы все пользователи в вашей сети имели одинаковые категории, вы можете экспортировать эту часть реестра, а затем импортировать ее другим пользователям. К сожалению, вы также перезапишете все их категории. Из-за формата этого ключа объединить категории будет непросто. Это REG_BINARY, который содержит разделенный точкой с запятой список категорий в Юникоде.
Каждая запись контакта имеет поле, которое содержит список категорий, с которыми связан контакт. Нет простого способа нажать одну кнопку и удалить данную категорию из всех записей контактов. Вы можете создать сценарий VBA, который сделает это, перебрав все записи и удалив эту категорию.
Может быть проще просто экспортировать все контакты в какой-либо другой формат, при необходимости манипулировать ими, а затем повторно импортировать.
Сожалею, но начиная с версии Outlook 2007, которую использует Бен, главный список категорий (mcl) хранится на сервере, если почтовый ящик является хранилищем по умолчанию. Независимо от того, есть ли сервер Exchange или нет, реестр больше не используется.
Однако для удаления категорий из контакта не имеет значения, где хранится mcl. Это потому, что название категории сохраняется дважды: один раз в mcl и один раз с элементом. Таким образом, удаление одного не влияет на другое.
Если вы хотите реорганизовать свои категории, Менеджер категорий - ценный инструмент (см. http://www.vboffice.net/product.html?lang=en). Это помогает вам находить и редактировать двойные категории, такие как «студенты» и «студент».
После того, как вы очистили свой mcl, инструмент также может распространить его среди других клиентов, независимо от версии Outlook. И вы можете сами решить, перезаписать ли существующий mcl или объединить его с вашим.
Я сделал простой скрипт 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"