Office関連

Outlookの予定本文の一部を文字装飾するVBAマクロ

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

「もし宇宙人が地球レポートをまとめたら」動画公開前のページ

「Google I/O 報告会 2017 東京」に参加しました。次のページ

関連記事

  1. Office関連

    Excel Services JavaScript APIを試してみました(2)

    前回の記事で、JavaScriptコードを貼り付けてExcelワークブ…

  2. Excel

    Acrobatを使ってPDFのドロップダウンリストに項目を追加するVBAマクロ

    久々のVBAネタです。“Acrobatを使って手作業で更新している…

  3. アイコン一覧

    Office 2013 アイコン一覧(M)

    ・Office 2013 アイコン一覧 NUM…

  4. Office関連

    PowerShellからNetOfficeを使ってExcelを操作する方法

    先日、Excel MVPの伊藤さんがPowerShellからExcel…

  5. Office関連

    埋め込んだブックへのユーザー入力を活用する

    「Excel Web Appのブック埋め込みを試してみました。」でEx…

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP