こんにちは。業務自動化の世界へようこそ。
Word VBAというツールは、単なる「文書作成の省力化」を超え、あなたの事務作業を「自動生成される芸術」へと昇華させる可能性を秘めています。
今回は、Word VBAで最も苦労しがちな「表(Table)」の扱いについて、特に「文字量に合わせて行の高さを自動調整する」という、実務で絶対に避けて通れない要点を解説します。
—
1. なぜ「行の高さ」は手動調整してはいけないのか?
マクロを使わず、手作業で表を作っていると、以下のような「絶望」に直面したことはありませんか?
- 「流し込んだテキストが長すぎて、セルの中に隠れてしまった」
- 「かといって固定の高さにすると、短いテキストの時に余白が広すぎて不格好」
Wordの表は、実は「セルの高さ」を固定値(〇〇pt)で指定することも、内容量に応じて「自動」にすることも可能です。プログラムで表を生成する際、この設定を怠ると、後から手作業で修正する羽目になります。
自動化エンジニアの鉄則は「後工程で人に修正させない」こと。これをVBAで一発解決しましょう。
—
2. 【本質】行の高さを自動にするためのコード
まずは、特定の表の行高さを自動にするためのコードをご覧ください。ポイントは `HeightRule` というプロパティです。
Sub AdjustTableRowHeightAutomatically()
Dim tbl As Table
Dim row As row
‘ アクティブな文書の最初の表を対象にする
If ActiveDocument.Tables.Count = 0 Then
MsgBox “表が見当たりません!”
Exit Sub
End If
Set tbl = ActiveDocument.Tables(1)
‘ すべての行をループして「高さのルール」を設定する
For Each row In tbl.Rows
‘ wdRowHeightAuto は「自動調整」を意味する定数
row.HeightRule = wdRowHeightAuto
Next row
MsgBox “すべての行が文字量に応じて自動調整されるようになりました。”
End Sub
このコードの「魂」:HeightRuleの正体
- `row.HeightRule = wdRowHeightAuto`: これがすべてです。
- `wdRowHeightAtLeast`: 指定した高さ以上(内容が増えれば伸びる)
- `wdRowHeightExactly`: 指定した高さ固定(内容が溢れても伸びない=一番危険!)
- `wdRowHeightAuto`: 内容量に合わせて動的に変化(今回使うべき本命)
—
3. 実践:動的に表を作ってテキストを流し込む
ただ設定するだけでなく、「行を追加してテキストを流し込み、その上で自動調整する」という実務に近い一連の流れを見てみましょう。
Sub CreateDynamicTable()
Dim doc As Document
Dim tbl As Table
Dim i As Integer
Set doc = ActiveDocument
‘ 表を新規作成(3行2列)
Set tbl = doc.Tables.Add(Range:=Selection.Range, NumRows:=1, NumColumns:=2)
‘ ヘッダーの設定
tbl.Cell(1, 1).Range.Text = “項目名”
tbl.Cell(1, 2).Range.Text = “内容(長文が入る想定)”
‘ 行を追加してデータを流し込む
For i = 1 To 3
tbl.Rows.Add ‘ 新しい行を追加
tbl.Cell(i + 1, 1).Range.Text = “データ ” & i
tbl.Cell(i + 1, 2).Range.Text = “ここに非常に長いテキストを入れると、” & _
“Wordの標準設定では隠れてしまうことがありますが、” & _
“今回のロジックなら安心です。”
Next i
‘ ここで「自動調整」を適用
tbl.Rows.HeightRule = wdRowHeightAuto
MsgBox “表の生成と自動調整が完了しました。”
End Sub
—
4. 初学者が陥りやすい罠と解決策
罠その1:表がないのに操作しようとする
`ActiveDocument.Tables(1)` を呼び出す際、文書内に表が一つもないと、容赦なく「インデックスが有効範囲にありません」というエラーが出ます。必ず `If ActiveDocument.Tables.Count > 0 Then` で存在確認をする癖をつけましょう。
罠その2:セル結合後の行操作
セルを結合した行に対して `Rows.Add` を行うと、Wordは混乱します。「結合は最後に、データ流し込みは単純な表構造のうちに」というのが、伝説のアーキテクトが教える鉄則です。
—
最後に:ここをクリアすれば、あなたはもう「自動化の入り口」に立っています
Word VBAは、「見た目の美しさ」と「データの正確さ」のバランスを取るのが難しい分野です。しかし、今日学んだ `HeightRule` をマスターしたことで、あなたは「手作業でレイアウトを微調整する」という非効率な時間から解放されるはずです。
次は、表のスタイル設定(罫線の太さや背景色)をコードで操る技術に挑戦してみてください。プログラムでドキュメントが美しく組み上がる瞬間は、何度味わっても最高ですよ。
何か詰まったら、いつでも戻ってきてください。コードは裏切りませんから。
