vba - texto - trucos skype chat
Macro de MS Outlook para tachar el texto seleccionado (3)
Aquí hay algunas notas sobre cómo jugar con el mensaje abierto, no hay controles, simplemente asume que tiene un elemento 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
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.
Por ejemplo, el siguiente código simple:
Selection.Font.Strikethrough = True
funciona para Word, pero da un error para Outlook:
Run-time error ''424'':
Object required
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
Esto supone que también tiene Word instalado en su caja. De ser así, puede acceder a la mayoría de 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