Excelの質問掲示板を見たら、「Outlookの予定本文の一部をマクロで太字にしたい」との質問がありました。
似たような質問に5年ほど前に回答したことがあるのですが、この手の処理は“WordEditor = WordのDocumentオブジェクト経由で処理するのが鉄板”だと思います。
Option Explicit Public Sub Sample() Dim app As Object 'Outlook.Application Dim itm As Object 'Outlook.AppointmentItem Dim ins As Object 'Outlook.Inspector Dim doc As Object 'Word.Document Const olAppointmentItem = 1 Const olEditorWord = 4 Const olSave = 0 Const wdBlue = 2 'CreateObject("Outlook.Application")では上手く処理できない場合があるため、 '先にOutlookを起動してからGetObjectで取得 '※Shellで起動しても上手くいかない場合は、手動で事前にOutlookを起動しておく On Error Resume Next Set app = GetObject(, "Outlook.Application") If app Is Nothing Then Shell "OUTLOOK", vbNormalFocus Do Set app = GetObject(, "Outlook.Application") DoEvents Loop While app Is Nothing End If On Error GoTo 0 '予定作成 Set itm = app.CreateItem(olAppointmentItem) With itm .Subject = "テスト予定" .Start = DateAdd("d", 1, Now()) .Display Set ins = .GetInspector End With 'WordEditor(Document)経由で予定文字装飾 If ins.EditorType = olEditorWord Then Set doc = ins.WordEditor doc.Range.InsertAfter "あいうえお" & vbNewLine & _ "かきくけこ" & vbNewLine & _ "さしすせそ" With doc.Range(6, 11).Font .ColorIndex = wdBlue .Bold = True End With End If '作成した予定を保存して終了 itm.Close olSave app.Quit End Sub
コード中にコメントとして記載していますが、Excel VBAから処理をする際、「CreateObject(“Outlook.Application”)」で新規にOutlookを起動して処理しようとした場合、エラーが発生して上手く処理できないことがあったため、Shell関数で先にOutlookを起動してから処理を行うようにしています。
文字装飾を行う部分に関しては、色々な書き方があるため、その時々に応じた処理をするのが良いと思います(上記コードではWordのRangeオブジェクト経由で文字装飾しています)。
この記事へのコメントはありません。