10
votes

Ms Outlook macro à atteindre le texte sélectionné

La tâche consiste à appliquer christout em> à la police actuelle dans la zone de texte sélectionnée. La difficulté est que Outlook ne supporte pas l'enregistrement des macros à la volée - il veut que le code soit écrit à la main.

Par exemple, le code simple suivant: P>

Run-time error '424':
Object required


2 commentaires

J'utilise MS Outlook 2003. L'idée est d'appliquer une police non sur un bloc de texte prédéfini (par exemple "La phrase est en gras" ou correspondant à un modèle dans le corps de message), mais au texte sélectionné manuellement (je veux dire, avec la souris).


Je voulais juste suivre si le ci-dessous répond à votre question.


4 Réponses :


1
votes

Voici quelques notes sur la messagerie avec le message ouvert, il n'y a pas de chèques, cela suppose simplement que vous avez un article de courrier ouvert. Si vous souhaitez dire un peu plus sur ce que vous voulez faire, et dans quelle version, je pourrais peut-être vous aider un peu plus.

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 commentaires

L'idée est d'appliquer une police pour sélectionner manuellement (E.G, avec la souris); et le corps du message n'a aucune information sur la sélection.



13
votes

Ceci suppose que vous avez également un mot installé sur votre boîte. Si tel est le cas, vous pouvez accéder à la plupart du mot OM à partir de l'Outlook VBE sans référencer le mot à l'aide de l'objet ActiveInSpector.wordEditor . XXX


1 commentaires

+1, et si vous n'avez pas de mot, ou si Outlook est configuré pour utiliser HTML à la place, vous pouvez y arriver via activeInspector.htmleditor .



1
votes

Vous devez accéder à HTMEDITOR ou à WordAditor de l'inspecteur. Vérifiez le fichier d'aide pour un exemple de code. Si vous utilisez WordEditor, vous pouvez enregistrer une macro dans Word et incorporer le code résultant dans la macro Outlook à l'aide du 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


0 commentaires

0
votes

Sauter de Todd Main Extect Exemple ci-dessus.
J'ai légèrement modifié le code pour travailler dans le volet de réponse inline, car nous n'avons pas trouvé de moyen simple d'ajouter à Strikethrough au qat ou au ruban.
J'ai également ajouté un bloc IF pour basculer le striéthrough s'il était déjà défini.

Sub StrikeThroughinInlineReply()
    Dim objOL As Application
    Dim objDoc As Object
    Dim objSel As Object
    Set objOL = Application
    Set objDoc = objOL.ActiveExplorer.ActiveInlineResponseWordEditor
    Set objSel = objDoc.Windows(1).Selection
    If objSel.Font.Strikethrough = False Then
        objSel.Font.Strikethrough = True
    Else
        objSel.Font.Strikethrough = False
    End If
End Sub


0 commentaires