2010-04-07 4 views
2

Я пытаюсь использовать этот код, чтобы получить выделенный текст в перспективе 2003Макрос VBA, чтобы получить выделенный текст в 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 

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

ответ

1

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

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

Некоторые более прибегая к помощи показал, что его невозможно получить выбранный текст почты в панели предварительного просмотра. 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 спасибо за помощь, я могу закрыть эту тему. Pls дайте мне знать.

0
Dim oText As Range 

TextRange является свойством объекта TextFrame. Он возвращает объект Range. Объект TextRange отсутствует.

1

Только в случае, если кто-то использует редактор слово вместо 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 

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

+0

(только пробовал в перспективе 2010 года) –