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オブジェクト経由で文字装飾しています)。



















この記事へのコメントはありません。