1

Я пытаюсь найти Changed by:{TAB}My Name в теле письма в мастере правил Outlook. где {TAB} - символ табуляции.

Однако, похоже, что это не позволит мне ввести символ табуляции.

Я не могу просто найти два элемента, « Changed by: и « My Name как мое имя появляется несколько раз и заменяется стандартным полем.

Я использую MS Office 2010

Есть ли другой способ добиться этого?

3 ответа3

1

Мне удалось вставить вкладку в строку поиска, нажав Control+i при ее вводе, но это не соответствовало сообщениям на моем почтовом сервере. Когда я проверил фактические символы в теле сообщения полученного сообщения, я обнаружил, что символ {TAB} был фактически переведен в шесть символов Юникод, за которыми следует один пробел. Это не позволило найти строку поиска. Вы можете сначала попробовать этот метод, чтобы увидеть, работает ли он с вашими электронными письмами.

В качестве альтернативного решения вы можете создать "пользовательское" правило, добавив макрос Outlook Basic для приложений в Outlook.

  1. Сначала включите меню "Разработчик", перейдя в Outlook -> "Параметры" -> "Настройка ленты", а затем отметьте опцию « Разработчик» в списке « Основные вкладки» справа.
  2. Теперь вернемся в ваш основной вид Outlook, вы должны увидеть меню разработчика , выберите его
  3. Нажмите кнопку « Безопасность макросов» на ленте и выберите "Уведомление для всех макросов" или «Включить все макросы (не рекомендуется; может выполняться потенциально опасный код)».
  4. Затем нажмите кнопку Visual Basic на ленте, чтобы открыть редактор Visual Basic
  5. Перейдите в Инструменты -> Ссылки и добавьте ссылку на библиотеку Microsoft VBScript Regular Expression 5.5.
  6. В редакторе Visual Basic выберите ThisOutlookSession и вставьте код, указанный ниже.
  7. Сохраните ваш проект и выйдите из Outlook
  8. Откройте Outlook и отправьте себе тестовое сообщение.

Вам нужно будет отредактировать содержимое строки констант RouteToFolderName и RouteToFolderRegEx в соответствии с вашими поисковыми предпочтениями.

Макрос сохраняется в файл с именем VBAProject.OTM находится в области пользовательских настроек (папка C:\Users\\AppData\Roaming\Microsoft\Outlook\ в Windows 7). Возможно, вы захотите сделать резервную копию этого файла после того, как макрокоманда будет работать в соответствии с вашими требованиями.


Вариант Явный

Private WithEvents olInboxItems как элементы

'Это имя папки, в которую вы хотите, чтобы ваши сообщения были перемещены в Private Const RouteToFolderName As String = "FollowUp"

«Это регулярное выражение, которое соответствует тексту, который вы ищете». Outlook заменил один символ {TAB} на '6 x \u00A0 символов и 1 x пробел. Private Const RouteToFolderRegex As String = "Изменено:\u00A0+\s+Me"

Private Sub Application_Startup() Dim objNS As NameSpace Установить objNS = Приложение.Сеанс 'Присоедините папку "Входящие" Outlook, чтобы получать событие при поступлении элемента. Установите olInboxItems = objNS.GetDefaultFolder(olFolderInbox).Пункты, установленные objNS = Nothing End Sub

Private Sub olInboxItems_ItemAdd(элемент ByVal As Object) Dim objNS As NameSpace Dim objMailItem As Outlook.MailItem Dim objMailFolderId As String Dim regex Как RegExp Dim найден как логический

' Check to make sure we have a mail message first
If (TypeOf Item Is Outlook.MailItem) Then

    ' Locate the id of the folder we want to store the message in
    objMailFolderId = FindFolderByName(Application.Session.folders, Found,

RouteToFolderName)

    Set objMailItem = Item

    Set regex = New RegExp
    regex.IgnoreCase = True  ' Do a case insensitive search
    regex.Global = True
    regex.Pattern = RouteToFolderRegex

    ' Test the message body against the regular expression
    If (regex.Test(objMailItem.Body)) Then
        ' Message body matched so move to our folder
        objMailItem.Move Application.Session.GetFolderFromID(objMailFolderId)
    End If
End If
 End Sub

'Рекурсивный поиск в корневой папке папки, которая соответствует "folderName" (без учета регистра). Открытая функция FindFolderByName (папки ByRef как Outlook.folders, ByRef найден как Boolean, ByVal folderName как строка) как строка Dim objFolder как Outlook.скоросшиватель

For Each objFolder In folders
    If Found = True Then
        Exit Function
    End If

    If LCase(objFolder.Name) = LCase(folderName) Then
        FindFolderByName = objFolder.EntryID
        Found = True
        Exit Function
    Else
        If objFolder.folders.Count > 0 Then
            FindFolderByName = FindFolderByName(objFolder.folders, Found, folderName)
        End If
    End If
Next End Function
0

Вы можете ввести символ табуляции с клавиатуры, используя цифровую клавиатуру с включенным NumLock. Шестнадцатеричный код ASCII для символа табуляции - "09". Удерживая клавишу Alt, введите "09" на цифровой клавиатуре. Когда вы отпускаете клавишу Alt, генерируется символ табуляции.

0

Попробуйте поискать Changed by:^tMy Name .

Если это не сработает, попробуйте набрать всю строку поиска, включая обычный символ табуляции, в WordPad, а затем вырезать и вставить в поиск.

Если это все еще не работает, то сделайте то же самое, но с помощью расширенного поиска.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .