Home » ワードマクロ・Word VBAの使い方 » CommandBarオブジェクトの一覧を作成するWordマクロ

CommandBarオブジェクトの一覧を作成するWordマクロ

動作検証バージョン:Windows 11 Home + 64bit Word バージョン 2501(ビルド18429.2501クイック実行)

CommandBarオブジェクトの一覧を作成するExcelマクロをご紹介しました。

Wordの場合が気になったので、Word VBAでも同様のマクロを作成してみました。

CommandBarオブジェクトの一覧を作成するサンプルマクロ

以下のWordマクロを実行すると、新規にWord文書が作成され、CommandBarオブジェクトのIndex・Name・NameLocalの一覧が作成されます。

Sub CommandBarオブジェクトの一覧を作成する()
 
 Dim doc As Document
 Set doc = Documents.Add
 
 Dim tbl As Table
 Set tbl = doc.Tables.Add(Range:=doc.Range, NumRows:=1, NumColumns:=3)
 
 Dim row_ As Row
 Set row_ = tbl.Rows(1)
 row_.Cells(1).Range.Text = "Index"
 row_.Cells(2).Range.Text = "Name"
 row_.Cells(3).Range.Text = "NameLocal"
 
 Dim i As Long
 With Application.CommandBars
  For i = 1 To .Count
   Set row_ = tbl.Rows.Add
   row_.Cells(1).Range.Text = .Item(i).Index
   row_.Cells(2).Range.Text = .Item(i).Name
   row_.Cells(3).Range.Text = .Item(i).NameLocal
  Next
 End With
 
 tbl.Rows(1).Range.Font.Bold = True
 tbl.Columns.AutoFit
 
End Sub

サンプルマクロで行っている処理

行っている処理は以下のとおりです。

新規文書の作成、表の挿入と見出し行の作成

最初に、一覧を出力する用の新規Word文書を作成して、

 Dim doc As Document
 Set doc = Documents.Add

1行×3列の表を作成し、

 Dim tbl As Table
 Set tbl = doc.Tables.Add(Range:=doc.Range, NumRows:=1, NumColumns:=3)
作成した1行×3列の表に、見出し部分の文字列を入力しています。
 
 Dim row_ As Row
 Set row_ = tbl.Rows(1)
 row_.Cells(1).Range.Text = "Index"
 row_.Cells(2).Range.Text = "Name"
 row_.Cells(3).Range.Text = "NameLocal"

CommandBarオブジェクトの一覧作成

この後の以下の部分が、

 Dim i As Long
 With Application.CommandBars
  For i = 1 To .Count
   Set row_ = tbl.Rows.Add
   row_.Cells(1).Range.Text = .Item(i).Index
   row_.Cells(2).Range.Text = .Item(i).Name
   row_.Cells(3).Range.Text = .Item(i).NameLocal
  Next

CommandBarオブジェクトの一覧を作成する主たる処理です。
基本的にはExcelマクロと同じ考え方ですが、Wordの表にするためにExcelの場合とは処理が異なっています。

CommandBarsコレクションの要素数、すなわちCommandBarオブジェクトの個数だけFor~Nextループを回すのはExcelマクロと同じです。

 Dim i As Long
 With Application.CommandBars
  For i = 1 To .Count

For~Nextループの中では、まず表の最後に行を追加しています。

   Set row_ = tbl.Rows.Add

その追加した行の3つのセルに、Index・Name・NameLocalを出力しています。

   row_.Cells(1).Range.Text = .Item(i).Index
   row_.Cells(2).Range.Text = .Item(i).Name
   row_.Cells(3).Range.Text = .Item(i).NameLocal
  Next

表を見やすく調整

For~Nextループを抜けたら、1行目・見出し行を太字にして、列幅を自動調整しています。

 tbl.Rows(1).Range.Font.Bold = True
 tbl.Columns.AutoFit
[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » CommandBarオブジェクトの一覧を作成するWordマクロ

「ワードマクロ・Word VBAの使い方」の記事一覧

検索


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

.