宏VBA以获取Outlook 2003中的选定文本

时间:2010-04-07 10:45:38

标签: 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 个答案:

答案 0 :(得分: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感谢您的帮助,我可以关闭这个帖子。请告诉我。

答案 1 :(得分: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
当word是编辑器时,

得到类似的东西。我试图将其粘贴到对已接受的答案的评论中,但它破坏了格式并且非常无用,所以发布作为答案。

答案 2 :(得分:0)

  Dim oText As Range

TextRange是TextFrame对象的属性。它返回一个Range对象。没有TextRange对象。