2

このコードスニペットを使用して、Outlook2003で選択したテキストを取得しようとしています

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

これを修正するために参照を追加する必要がありますか?

4

3 に答える 3

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は私に知らせてください。

于 2010-04-08T05:37:23.887 に答える
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

単語が編集者であるときに似たようなものになります。受け入れた回答のコメントにこれを貼り付けようとしましたが、フォーマットが壊れてかなり役に立たなかったので、回答として投稿しました。

于 2011-06-17T18:03:43.833 に答える
0
  Dim oText As Range

TextRangeは、TextFrameオブジェクトのプロパティです。Rangeオブジェクトを返します。TextRangeオブジェクトはありません。

于 2010-04-07T14:02:50.373 に答える