VBAでWordの表から空の行を削除する方法

Visual Basic

VBA初心者でも簡単に実装できる、Word文書内の表から空のセルが含まれる行を自動で削除する方法を解説します。この記事では、空行を見つけて削除する方法を詳しく説明し、選択できるようにする方法と、縦に連結されたセルの行はスキップする方法を紹介します。

1. 空行を削除する基本的なコードの書き方

まず、空のセルを検索して削除する基本的なVBAコードの構造を確認しましょう。以下のコードは、Word文書内のすべての表に対して、空のセルが含まれる行を検索し、削除するかどうかをメッセージボックスで確認します。

コード例:
Sub CEL_DEL()
Application.ScreenUpdating = False
Dim tbl As Table, cel As Cell, i As Long, n As Long, fEmpty As Boolean
Dim rc As VbMsgBoxResult
'行の削除
With ActiveDocument
For Each tbl In .Tables
n = tbl.Rows.Count
For i = n To 1 Step -1
fEmpty = True
For Each cel In tbl.Rows(i).Cells
If Len(cel.Range.Text) > 2 Then
fEmpty = False
Exit For
End If
Next cel
If fEmpty = True Then
tbl.Rows(i).Select
rc = MsgBox('空行を削除しますか?', vbYesNo + vbQuestion)
If rc = vbYes Then
tbl.Rows(i).Delete
Else
End If
End If
Next i
Next tbl
End With
Set cel = Nothing: Set tbl = Nothing
Application.ScreenUpdating = True
End Sub

2. 表示の確認と選択部分の表示を改善

上記コードでは選択された行が視覚的に分かりづらいという問題があります。この問題を解決するために、行を選択する際に背景色を変更することをお勧めします。選択した行の背景色を変更することで、どの行が選ばれているのかが一目で分かります。

修正例:
tbl.Rows(i).Shading.BackgroundPatternColor = wdColorYellow

3. セルが縦に連結されている場合のスキップ方法

もしセルが縦に連結されている場合は、その行をスキップする必要があります。縦連結されたセルを検出するためには、RowSpanColumnSpanを利用して、セルの結合状態を確認する方法があります。

簡単な方法として、cell.MergeStatusを使用し、結合されているセルの行をスキップすることができます。これにより、結合セルの行を削除対象から除外できます。

4. メッセージボックスの改善とエラーハンドリング

ユーザーに空行を削除するかどうか確認するためのメッセージボックスを表示していますが、この部分を改善して、より使いやすくすることができます。さらに、エラーハンドリングを追加して、誤ってデータを削除してしまわないように注意しましょう。

改善案:
If rc = vbYes Then
'削除処理
Else
'キャンセル処理
End If

まとめ

VBAでWord文書内の表から空行を削除する方法は簡単に実装できます。選択した行が視覚的にわかりやすくなり、縦に連結されたセルをスキップする方法も追加することで、より効率的に作業ができるようになります。これらの改善を行うことで、作業がスムーズに進みますので、ぜひ試してみてください。

コメント

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