Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordの囲い文字を設定する

Excel VBAでWordの囲い文字を設定する

動作検証バージョン:Windows 11 Home + 64bit Excel & Word バージョン 2407(ビルド17816.20000クイック実行)ベータチャネル

「excelマクロ wordで文字囲う指定」
といった検索キーワードでアクセスがありました。

Excelマクロで、Wordの文字を囲うにはどのようなコード書けばいいのかを調べていた方による検索です。

Wordの囲い文字を設定するサンプルプロシージャ

本文に何らかの文字列の入力されているWord文書を1つ開いた状態で、以下のExcelマクロを実行してください(Wordへの参照設定は不要です)。

Sub Word文書で囲い文字を設定する()
On Error GoTo ErrHandl

 Const wdEncloseStyleLarge = 2
 Const wdEnclosureCircle = 0
 
 With GetObject(Class:="Word.Application")
  .ActiveDocument.Range(0, 1).ModifyEnclosure _
    Style:=wdEncloseStyleLarge, _
    Symbol:=wdEnclosureCircle
 End With

Exit Sub
ErrHandl:
 Select Case Err.Number
  Case 429
   MsgBox "Wordが起動していないようです。"
  Case 4248
   MsgBox "Word文書が開かれていないようです。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

Word文書の1文字目に囲い文字が設定されます。

サンプルプロシージャで行っている処理内容

Word VBAであれば、以下のコードでアクティブ文書の1文字目に囲い文字を設定できます。

ActiveDocument.Range(0, 1).ModifyEnclosure _
  Style:=wdEncloseStyleLarge, _
  Symbol:=wdEnclosureCircle

RangeオブジェクトのModifyEcclosureメソッドを使えば囲い文字を設定できます。

Excel VBAから設定したいということですから、まずVBAのGetObject関数を使って、Word.Applicationオブジェクトへの参照を取得しています。

With GetObject(Class:="Word.Application")

純粋なWord VBAであれば、いきなり「ActiveDocument.」と書き始められますが、Excel VBAからの操作ですから、Word.ApplicationオブジェクトのActiveDocumentプロパティを使うわけですからActiveDocumentの直前の「.」が必須です。

With GetObject(Class:="Word.Application")
 .ActiveDocument.Range(0, 1).ModifyEnclosure _

このあとの、どのように囲うのかを指定する部分で、Word VBAであればいきなり定数を指定できますが、参照設定していないExcel VBAの場合いきなりWordライブリの定数「wdEncloseStyleLarge」「wdEnclosureCircle」が出てきても

コンパイルエラーになってしまいます。
そのため事前にこれらの定数を定義しています。

Const wdEncloseStyleLarge = 2
Const wdEnclosureCircle = 0

ModifyEnclosureメソッドはWordで文字列範囲を表すRangeオブジェクトにのみ用意されているメソッドです。

上記のサンプルではDocument.Rangeメソッドを使って1文字目を表すRangeを取得しています。

Rangeオブジェクトの取得については、拙著『Excel VBAユーザーのためのWord VBA入門(1)』もご参照ください。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordの囲い文字を設定する

「Office連携」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.