2009-11-19 20 views
10

La tarea es aplicar tachado a la fuente actual en el área de texto seleccionada. La dificultad es que Outlook no admite la grabación de macros sobre la marcha: quiere que el código se escriba a mano.macro de MS Outlook para tachar el texto seleccionado

Por ejemplo, el siguiente código simple:

Selection.Font.Strikethrough = True 

obras para Word, pero da un error para Outlook:

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

estoy usando MS Outlook 2003. La idea es aplicar fuente no al bloque de texto predefinido (por ejemplo, "La frase está en negrita", o coinciden con alguna patrón en el cuerpo del mensaje), pero a seleccionar manualmente el texto (i significa, con el mouse). – Andy

+0

solo quería hacer un seguimiento para ver si el siguiente responde su pregunta. –

Respuesta

1

Aquí hay algunas notas sobre jugar un poco con el mensaje abierto, no hay cheques, solo asume que tiene un artículo de correo abierto. Si desea decir algo más sobre lo que quiere hacer y en qué versión, puedo ayudar un poco más.

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

La idea es aplicar la fuente al texto seleccionado manualmente (por ejemplo, con el mouse); y el cuerpo del mensaje no tiene información sobre la selección. – Andy

13

Esto supone que también tiene instalado Word en su caja. De ser así, puede acceder a la mayoría del Word OM desde Outlook VBE sin hacer referencia a Word utilizando el objeto ActiveInspector.WordEditor.

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, y si no tiene Word, o si Outlook está configurado para usar HTML en su lugar, puede acceder a él a través de 'ActiveInspector.HTMLEditor'. – Aaronaught

1

Debe acceder al HTMLEditor o WordEditor del Inspector. Verifique el archivo de ayuda para ver el código de muestra. Si usa WordEditor, puede registrar macro en Word e incorporar el código resultante en la macro de Outlook utilizando WordEditor.

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 
Cuestiones relacionadas