2009-11-19 17 views
10

Görev, seçili metin alanındaki geçerli yazı tipine strikeout uygulamaktır. Zorluk, Outlook'un makroları kayıt anında desteklememesidir - kodun elle yazılmasını ister.MS Seçili metinde strikeout için Outlook makro

Örneğin, aşağıdaki basit kod: Burada

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

Ben önceden tanımlanmış metin bloğuna değil yazı uygulamak için MS Outlook 2003 Fikir edilir kullanıyorum (örneğin, "cümle kalın" veya ileti gövdesinde bazı desen eşleştirme), fakat manuel olarak seçilen metni (i fare ile demek). – Andy

+0

sadece aşağıdaki soruları cevaplayıp cevaplamadığınızı görmek için takip etmek istedim. –

cevap

1

açık mesaj ile karıştırmasını üzerinde birkaç nokta belirtilmiştir: Word için

Selection.Font.Strikethrough = True 

çalışır, ancak Outlook için bir hata veriyor Çek yok, sadece açık bir posta öğeniz olduğunu varsayar. Ne yapmak istediğiniz hakkında biraz daha fazla şey söylemek isterseniz ve hangi versiyonda biraz daha yardımcı olabilirim.

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

Fikir, elle seçilen (ör., Fare ile) yazıya yazı tipi uygulamak; ve mesaj gövdesi seçim hakkında herhangi bir bilgi içermez. – Andy

13

Bu, ayrıca kutunuza Word'ün yüklü olduğunu varsayar. Öyleyse, Word OM'nin çoğuna Word'e başvurmadan, Word'e başvurmadan ActiveInspector.WordEditor nesnesini kullanarak erişebilirsiniz.

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'ünüz yoksa veya Outlook, HTML yerine kullanmak üzere ayarlanmışsa, 'ActiveInspector.HTMLEditor' aracılığıyla alabilirsiniz. – Aaronaught

1

Müfettişin HTMLEditor veya WordEditor dosyasına erişmeniz gerekir. Örnek kod için yardım dosyasını kontrol edin. WordEditor kullanıyorsanız, Word'de makro kaydedebilir ve sonuç kodunu WordEditor kullanarak Outlook makroya ekleyebilirsiniz.

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 
İlgili konular