【入門編】【初心者向け】表の行数をカウントし、足りない場合に自動で新規行を追加するロジック – Word VBA解析バイブル

スポンサーリンク

【Word VBA】表の行数を自由自在に操る!動的行追加の極意を伝授します

こんにちは。現場で「マクロの記録」を卒業し、真の自動化エンジニアへと駆け上がろうとしている皆さん。

Word VBAにおいて「表(Table)」を扱うのは、Excelとはまた違った独特の難しさがあります。特に「データ件数に合わせて行を増やす」という処理は、業務自動化における最も基本的かつ強力な武器です。

今回は、この「行の動的生成」をマスターし、どんな複雑な帳票にも対応できる骨太な実装力を身につけましょう。

—

なぜ「表の動的生成」が重要なのか?

Wordの帳票作成において、最も頭を悩ませるのが「データによって行数が変わる」という現象です。

  • データが少ないのに空白行が多すぎて見苦しい。
  • データが多すぎて、ページからはみ出したり、レイアウトが崩れる。

こうした「静的なテンプレートの限界」を突破し、「必要な時に必要な分だけ行を生み出す」ロジックこそが、業務効率化の生命線です。

—

実装の核心:行追加ロジックの全貌

まずは、一番下の行を基準に、データが足りなければ1行ずつ追加していく標準的なアプローチを見てみましょう。

Sub AddRowsToTable()
Dim doc As Document
Dim tbl As Table
Dim targetRowCount As Integer
Dim i As Integer

Set doc = ActiveDocument
‘ 文書内の1番目の表を対象にする
Set tbl = doc.Tables(1)

‘ 目標とする行数(今回は仮に10行とします)
targetRowCount = 10

‘ 現在の表の行数が目標に達していない場合、ループで追加する
‘ tbl.Rows.Count で現在の行数を取得するのがポイント!
Do While tbl.Rows.Count < targetRowCount ' 表の最後の行の直後に新規行を追加 tbl.Rows.Add Loop MsgBox "表の調整が完了しました。" End Sub

コードの解説:ここがプロの着眼点

1. `doc.Tables(1)`: Wordドキュメント内の表をインデックスで指定します。現場では `Bookmarks`(ブックマーク)と組み合わせて、「特定の場所にある表」を特定するのが定石です。
2. `tbl.Rows.Count`: これが今回一番覚えてほしいプロパティです。現在の行数を動的に返してくれます。
3. `tbl.Rows.Add`: 表の末尾に行を追加するメソッドです。引数を省略すると最後に追加されます。

—

初学者が必ずハマる「3つの落とし穴」

コードを書いていて、「あれ?動かない」「エラーが出る」と悩んだら、以下のポイントをチェックしてください。

1. 表の中に「セル結合」が含まれていませんか?

Wordの表でセルを結合している場合、行の追加時にエラーが発生することがあります。VBAは「整然としたグリッド状の表」を好みます。複雑な結合が必要な場合は、あらかじめ「行追加専用のシンプルな表」を隠し持っておき、そこにデータを流し込んでから転記する、というアーキテクチャを取るのが賢明です。

2. ループの無限回廊

`Do While` を使う際は、必ず「終了条件」が満たされることを確認してください。もしロジックが間違っていると、Wordが延々と行を追加し続け、メモリを食いつぶしてフリーズします。まずは `If` 文で1回だけ追加するテストから始めましょう。

3. 表の指定ミス

`doc.Tables(1)` は「文書内で最初に見つかった表」を指します。もし文書内に別の表(ヘッダーやレイアウト用の表など)が紛れ込んでいると、意図しない表に行が追加されます。「ブックマーク」で表に名前を付けるクセをつけてください。

—

さらなる高みへ:セルへの流し込み

行を追加するだけでなく、そこにデータを書き込むには `Cell` オブジェクトを操作します。

‘ 2行目の1列目にデータを書き込む例
tbl.Cell(2, 1).Range.Text = “No.1”

  • `Range.Text`: セルの中に直接文字を放り込むメソッドです。
  • 注意点: `Range.Text` で書き込むと、セルの末尾に存在する「セル終了マーク(¤)」を上書きしようとして、セルの書式が崩れることがあります。実務では `Replace` や `InsertBefore` を活用することもありますが、まずはこの基本形で感覚を掴んでください。

—

まとめ:ここをクリアすれば、あなたはもう初心者じゃない

今回紹介した「行数のカウント」と「動的な行追加」。これさえできれば、Word VBAで「定型帳票を自動生成する」ための土台は完成したも同然です。

1. `tbl.Rows.Count` で現在地を知る。
2. `tbl.Rows.Add` で未来を切り拓く。
3. `Cell(行, 列)` で情報を流し込む。

この3ステップを意識するだけで、あなたの作るマクロは「動かないおもちゃ」から「頼れる業務パートナー」へと進化します。

次は、「表の行数に合わせて、ページ番号を調整する」や「特定のデータが空なら行を削除する」といった応用にも挑戦してみてください。応援していますよ!

タイトルとURLをコピーしました