動作検証バージョン: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
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マクロ