Оказывается, Outlook VBA был подходом для этой задачи.
Вчера я наконец нашел отличный ответ:
https://www.datanumen.com/blogs/batch-find-replace-specific-words-outlook-folder-names/
Мне пришлось изменитьнемного код, заменив:
Set objFolders = Outlook.Application.Session.Folders("Personal").Folders
Таким образом, он ищет / изменяет только подпапки в папке, которую я выбрал в настоящее время:
Set objFolders = Outlook.Application.ActiveExplorer.CurrentFolder.Folders
Вот (почти) готовый код:
Public strFind, strReplace As String
Sub FindReplaceWordsinFolderNames()
Dim objFolders As Outlook.Folders
Dim objFolder As Outlook.Folder
Set objFolders = Application.ActiveExplorer.CurrentFolder.Folders
'You need to input the specific words for find and replace
strFind = InputBox("Enter the specific words you want to change.")
strReplace = InputBox("Enter the specific words you want to change to. (Case Sensitive)")
For Each objFolder In objFolders
Call ProcessFolders(objFolder)
Next
MsgBox "Complete!", vbExclamation, "Rename Folders"
End Sub
Private Sub ProcessFolders(ByVal objCurrentFolder As Outlook.Folder)
Dim objSubfolder As Outlook.Folder
On Error Resume Next
If InStr(LCase(objCurrentFolder.Name), LCase(strFind)) > 0 Then
'Find and replace the specific words
objCurrentFolder.Name = Replace(LCase(objCurrentFolder.Name), LCase(strFind), strReplace)
End If
'Process all folders recursively
If objCurrentFolder.Folders.Count > 0 Then
For Each objSubfolder In objCurrentFolder.Folders
Call ProcessFolders(objSubfolder)
Next
End If
End Sub
У него нет проверки ошибок, поэтому, если я нажму кнопку "Отмена" в поле ввода или оставлю поле пустым, и нажму "ОК", макрос будет действовать как "" - это strFind, поэтому он поворачивает все папкиимена в нижнем регистре, lol.
Я думаю, что добавление этого сразу после того, как 2 поля ввода решат это, но я проверю это завтра:
If strFind = "" Or strReplace = "" Then
Exit Sub
End If
Это решение кажется действительно хорошим длямне, так как существует так много разновидностей поисковых строк, что жесткое кодирование каждой из них было бы кошмаром.Вместо этого это позволит мне на лету приспособиться к тому, как мозг каждого пользователя работал, когда они разрабатывали свои структуры именования на протяжении многих лет.
После просмотра и использования этого я разработал еще один макрос для пакетного перемещения всегоиз выбранной директории в любую папку, в которую я хочу объединить их ... для создания моей истинной библиотеки файлов, но это другая тема, так что, я полагаю, вы не хотите, чтобы это было опубликовано здесь.