Macro VBA, чтобы получить выбранный текст в Outlook 2003

StackOverflow https://stackoverflow.com/questions/2591706

  •  25-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать этот фрагмент кода, чтобы получить выбранный текст в Outlook 2003

Sub SelectedTextDispaly()

    On Error Resume Next
      Err.Clear

      Dim oText As TextRange

      ''# Get an object reference to the selected text range.
      Set oText = ActiveWindow.Selection.TextRange

      ''# Check to see whether error occurred when getting text object
      ''# reference.
      If Err.Number <> 0 Then

         MsgBox "Invalid Selection. Please highlight some text " _
            & "or select a text frame and run the macro again.", _
            vbExclamation
         End

      End If

      ''# Display the selected text in a message box.
      If oText.Text = "" Then
         MsgBox "No Text Selected.", vbInformation
      Else
         MsgBox oText.Text, vbInformation
      End If

End Sub

При запуске этого макроса я получаю ошибку

---------------------------
Microsoft Visual Basic
---------------------------
Compile error:

User-defined type not defined

Нужно ли добавить любые ссылки, чтобы исправить это?

Это было полезно?

Решение

@Kuslyika, я попробовал вариант, который вы предложили, и пришли те же ошибки. Спасибо за помощь

Может быть, я не сформулировал мой вопрос правильно

Некоторые более густочки показали, что его невозможно получить выбранный текст почты на панели предварительного просмотра. http://www.eggheadcafe.com/forumarchives/Outlookprogram_visualbasica/aug2005/post23481044.asp.

Поэтому мне пришлось корректировать требование, чтобы я мог сделать действие из окна почтового элемента.

Следующий код помог мне (пришлось внести некоторые изменения в соответствии с моими потребностями)

Sub Blue_Code_Highlight()
    Dim msg As Outlook.MailItem
    Dim insp As Outlook.Inspector

    Set insp = Application.ActiveInspector
    If insp.CurrentItem.Class = olMail Then
        Set msg = insp.CurrentItem
        If insp.EditorType = olEditorHTML Then
            Set hed = msg.GetInspector.HTMLEditor
            Set rng = hed.Selection.createRange
            rng.pasteHTML "<font style='color: blue; font-family:Times New Roman; font-size: 10pt;'>" & rng.Text & "</font><br/>"
        End If
    End If
    Set insp = Nothing
    Set rng = Nothing
    Set hed = Nothing
    Set msg = Nothing
End Sub 

Источник:http://www.outlookcode.com/threads.aspxshforumid=4&messageId=26992.

@KusLeika Спасибо за помощь, могу ли я закрыть эту тему. Пожалуйста, дайте мне знать.

Другие советы

На всякий случай, если кто-то использует слова редактора вместо HTML, вы также можете вставить эту часть:

     If insp.EditorType = olEditorWord Then
        Set hed = msg.GetInspector.WordEditor
        Set word = hed.Application
        Set rng = word.Selection
        rng.Font.Name = "Times New Roman"
        rng.Font.Size = 10
        rng.Font.Color = wdColorBlack
    End If

Чтобы подобно, когда слово - это редактор. Я пытался вставить это в комментарий к принятому ответу, но он уничтожил форматирование и был довольно бесполезным, поэтому публикация в качестве ответа.

  Dim oText As Range

TexTrange - это свойство объекта TextFrame. Возвращает объект диапазона. Нет объекта Textrange.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top