Макро VBA для получения выделенного текста в Outlook 2003
Я пытаюсь использовать этот фрагмент кода, чтобы получить выделенный текст в 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
Нужно ли добавлять какие-либо ссылки, чтобы исправить это?
3 ответа
@Kusleika, я попробовал вариант, который вы предложили, и все равно появились те же ошибки. Спасибо за помощь
Может быть, я не правильно сформулировал свой вопрос
Еще один поиск в Google показал, что невозможно получить выделенный текст письма на панели предварительного просмотра. 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.aspx?forumid=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. Возвращает объект Range. Там нет объекта TextRange.