2009-11-19 7 views
10

कार्य चयनित टेक्स्ट क्षेत्र में वर्तमान फ़ॉन्ट पर स्ट्राइकआउट लागू करना है। कठिनाई यह है कि Outlook फ्लाई पर रिकॉर्डिंग मैक्रोज़ का समर्थन नहीं करता है - यह कोड को हाथ से लिखा जाना चाहता है।चयनित टेक्स्ट स्ट्राइकआउट करने के लिए एमएस आउटलुक मैक्रो

उदाहरण के लिए, निम्नलिखित सरल कोड: पद के लिए

Selection.Font.Strikethrough = True 

काम करता है, लेकिन Outlook के लिए एक त्रुटि देता है:

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

मैं एमएस आउटलुक 2003 विचार कर रहा है का उपयोग कर रहा पूर्वनिर्धारित पाठ खंड के लिए नहीं फ़ॉन्ट लागू करने के लिए (उदाहरण के लिए "वाक्य बोल्ड है", या संदेश के मुख्य भाग में कुछ पैटर्न से मेल खाते हैं), लेकिन मैन्युअल रूप से पाठ का चयन करने के लिए (i मतलब, माउस के साथ)। – 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

यह मानता है कि आपके पास भी आपके बॉक्स पर वर्ड स्थापित है। यदि ऐसा है, तो आप ActiveInspector.WordEditor ऑब्जेक्ट का उपयोग करके वर्ड को संदर्भित किए बिना Outlook VBE से अधिकांश वर्ड ओएम तक पहुंच सकते हैं।

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, और यदि आपके पास शब्द नहीं है, या यदि Outlook को HTML का उपयोग करने के लिए सेट अप किया गया है, तो आप इसे 'ActiveInspector.HTMLEditor' के माध्यम से प्राप्त कर सकते हैं। – Aaronaught

1

आपको इंस्पेक्टर के HTMLEditor या 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 
संबंधित मुद्दे