2009-11-19 12 views
10

ストライクアウトを選択したテキスト領域の現在のフォントに適用することです。 難しいのは、Outlookがその場でマクロの記録をサポートしていないことです。コードを手作業で書きたいと思っています。例えば選択されたテキストを取り除くMS Outlookマクロ

、次の簡単なコード:

Selection.Font.Strikethrough = True 

Wordの作品が、Outlookのエラーを与える:ここで

Run-time error '424': 
Object required 
+0

私はMS Outlook 2003を使用しています。フォントはあらかじめ定義されたテキストブロック(例:「文章は太字」またはメッセージ本体のパターンに一致しています)ではなく、手動で選択したテキスト平均、マウスで)。 – Andy

+0

あなたの質問に以下の回答があるかどうかを確認するためにフォローアップしたかっただけです。 –

答えて

1

は、開いているメッセージをいじりにいくつかの注意事項です小切手はありません。あなたには開いている郵便物があると仮定します。あなたが何をしたいのか、どのバージョンで何かを少し話したいのであれば、もう少しお手伝いできるかもしれません。

Dim ActiveMessage As MailItem 
Dim strHTML As String 

Set ActiveMessage = ActiveInspector.CurrentItem 
Debug.Print ActiveMessage.Body 
Debug.Print ActiveMessage.HTMLBody 

strHTML = Replace(ActiveMessage.Body, "This sentence is bold", _ 
    "<STRONG>This sentence is bold</STRONG>") 

ActiveMessage.HTMLBody = strHTML 

Debug.Print ActiveMessage.HTMLBody 
+1

アイデアは、手動で選択された(例えば、マウスで)テキストにフォントを適用することである。メッセージ本文には選択に関する情報がありません。 – Andy

13

これは、ボックスにWordがインストールされていることを前提としています。その場合は、ActiveInspector.WordEditorオブジェクトを使用してWordを参照せずに、OutlookのVBEからWord OMのほとんどにアクセスできます。

Sub StrikeThroughinMailItem() 
    Dim objOL As Application 
    Dim objDoc As Object 
    Dim objSel As Object 
    Set objOL = Application 
    Set objDoc = objOL.ActiveInspector.WordEditor 
    Set objSel = objDoc.Windows(1).Selection 
    objSel.Font.Strikethrough = True 
End Sub 
+2

+1、あなたがWordを持っていない場合、またはOutlookが代わりにHTMLを使用するように設定されている場合は、 'ActiveInspector.HTMLEditor'を使用して取得できます。 – Aaronaught

1

インスペクタのHTMLエディタまたはWordEditorにアクセスする必要があります。サンプルコードについては、ヘルプファイルを確認してください。 WordEditorを使用している場合は、Wordでマクロを記録し、WordEditorを使用して結果のコードをOutlookマクロに組み込むことができます。

Public Sub DoIt() 
    'must set word as mail editor 
    'must set reference to word object library 

    Dim oInspector As Outlook.Inspector 
    Dim oDoc As Word.Document 
    Dim oItem As Outlook.MailItem 

    Set oItem = Outlook.Application.CreateItem(olMailItem) 
    oItem.BodyFormat = olFormatRichText 'must set, unless default is rich text 

    Set oInspector = oItem.GetInspector 
    oInspector.Display 'must display in order for selection to work 

    Set oDoc = oInspector.WordEditor 

    'better to use word document instead of selection 
    'this sample uses selection because word's macro recording using the selection object 

    Dim oSelection As Word.Selection 
    Set oSelection = oDoc.Application.Selection 

    oSelection.TypeText Text:="The task is to apply strikethroughout." 
    oSelection.MoveLeft Unit:=wdCharacter, Count:=4 
    oSelection.MoveLeft Unit:=wdCharacter, Count:=7, Extend:=wdExtend 

    oSelection.Font.Strikethrough = True 

End Sub