【入門編】【初心者向け】表の特定の列を基準に昇順・降順で並び替えるVBAコード – Word VBA解析バイブル

スポンサーリンク

Word VBAの真髄:表の並び替え(Sort)を完全に掌握する

こんにちは。自動化の世界へようこそ。
普段、Wordの表を一つひとつ手作業で並び替えていませんか?「マクロの記録」ボタンを押して生成された、冗長で意味不明なコードを見て、なんとなく触るのを避けている……そんなあなたにこそ、この記事を読んでほしい。

Word VBAにおいて、表(Tableオブジェクト)を自在に操れるようになることは、自動化エンジニアとしての「登竜門」です。今回は、`Table.Sort`メソッドの核心に迫り、なぜ多くの初心者がここでつまずくのか、その正体を解き明かします。

—

1. なぜ「表の並び替え」が自動化の要なのか

Wordの表は、Excelのセルとは異なり、非常に「有機的」な存在です。行や列の挿入、結合、テキストの流し込み……これらをコードで制御できるようになると、報告書作成やデータ集計の時間は劇的に短縮されます。

特に`Table.Sort`は、Word VBAの中でも非常に強力なメソッドです。これを使えば、バラバラの順番で入力されたデータを、一瞬で「日付順」「金額順」に整列させることが可能です。

—

2. 実践:表を並び替えるためのVBAコード

まずは、以下のコードをご覧ください。現在カーソルがある位置の表を、「2列目(数値)」を基準にして昇順に並び替えるコードです。

Sub SortTableExample()
Dim tbl As Table

‘ 1. 現在のカーソル位置が表の中にあるか確認
If Selection.Information(wdWithInTable) = False Then
MsgBox “カーソルを並び替えたい表の中に置いてください。”, vbExclamation
Exit Sub
End If

‘ 2. 現在の表をオブジェクトとして取得
Set tbl = Selection.Tables(1)

‘ 3. 並び替えの実行
‘ ExcludeHeader:=True は、1行目を見出しとして除外する設定です
tbl.Sort ExcludeHeader:=True, _
FieldNumber:=”列 2″, _
SortFieldType:=wdSortFieldNumeric, _
SortOrder:=wdSortOrderAscending

MsgBox “表の並び替えが完了しました!”, vbInformation
End Sub

コードの解説

  • `Selection.Tables(1)`: 現在のカーソル位置にある表を指します。もし文書内に複数の表がある場合、この指定方法が最も安全です。
  • `FieldNumber:=”列 2″`: ここが肝です。「2番目の列」を基準にするという意味です。
  • `SortFieldType`: 並び替えるデータの種類を指定します。数値なら `wdSortFieldNumeric`、文字列なら `wdSortFieldAlphanumeric` を使い分けましょう。

—

3. 初学者が陥る「3つの落とし穴」

現場でよくある失敗事例と、その回避策を伝授します。

① 「表の中にいない」というエラー

コード実行時にカーソルが表の外にあると、`Selection.Tables(1)` は「そんなものはない!」とエラーを吐きます。必ず `Selection.Information(wdWithInTable)` で存在確認を行うのが、プロのたしなみです。

② 「見出し行」の扱いを忘れる

表の1行目が項目名(氏名、金額など)の場合、`ExcludeHeader:=True` を忘れると、項目名まで含めて並び替えられ、データの中に混ざってしまいます。これは非常に格好悪いミスです。

③ 結合セル(セルの結合)の罠

Wordの表で「セルが結合されている」と、`Sort`メソッドはしばしば動作を拒否します。複雑な結合を含む表を扱う場合は、先に結合を解除するか、あるいはVBAで一度表を再生成するようなアルゴリズムが必要になります。

—

4. さらなる高みへ:エンジニアの視点

今回のコードは「基本」ですが、実務では「複数のキーで並び替える」ことが求められるシーンも多いでしょう。
`Table.Sort` は引数が多いため、慣れてきたら以下のパラメータも調べてみてください。

  • `SortColumn`: 複数の列をキーにする際の起点。
  • `CaseSensitive`: 大文字・小文字を区別するかどうか。

Word VBAは「泥臭い」と思われがちですが、オブジェクトの性質さえ理解すれば、これほど頼りになるツールはありません。

—

最後に:自動化の第一歩を踏み出したあなたへ

「マクロの記録」から卒業し、自分でコードを書いて動かす。この感覚を覚えたら、もうあなたは立派な自動化エンジニアの卵です。

まずはこのコードをコピーして、適当なWord表で動かしてみてください。うまく並び替わった瞬間のあの小さな感動こそが、エンジニアとしての成長の糧になります。

次は、「表の特定のセルに値を書き込む」方法や、「行を追加してデータを蓄積する」テクニックを一緒に学んでいきましょう。何か詰まったら、いつでもここに戻ってきてくださいね。応援しています!

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