【Word VBA】表の行を追加・削除するWordマクロ(改良版)

2012年5月23日

表の行数を増減させるマクロの紹介です。

表の行を追加・削除するマクロ(簡易版) や、PC Online の単純作業の繰り返しこそ自動化せよ  にて紹介したマクロの丁寧なバージョンです。

このマクロでできること

表に任意の数の行を追加したり削除したりできます。

細かな使い方は、上記記事をご覧ください。

ちょっとしたことなのですが、Wordの機能を使うよりも便利だと思います。

我々翻訳者が表を作るのは、納品メモを作成するときだと思います。

記載項目が増えれば、行を増やすというパターンが多いですよね。

または、不要な行を削除するということもあると思います。

そのようなときに、簡単に実行できます。

私は、行の挿入を[Alt] + [L]に割り付けて、行の削除を [Alt] + [D]に割り付けています。

→キーボードへの割り付け方法はこちら

マクロの解説

Do...Loopステートメントにて、InputBoxにて数値が入力されるまでループを繰り返しています。

ひらがなやアルファベットを入力しても先に進めません。

通常の利用では、数万行も行を追加することはないと思いますが、Wordの仕様にあわせて、一度に追加できる上限を32767行としました。

これくらい行を追加するのであれば、Excelを使ってください。Wordには負担が大きすぎてかわいそうです。

マクロ


Sub 表_行挿入()

  Dim myLines As String

  If Selection.Information(wdWithInTable) = False Then Exit Sub

  Do
    myLines = InputBox("行数を入力してください。", "行の挿入", 1)
    If myLines = vbNullString Then Exit Sub
  Loop While IsNumeric(myLines) = False

  If CLng(myLines) >= 1 And CLng(myLines) <= 32767 Then
   Selection.InsertRowsBelow myLines
   Selection.MoveUp unit:=wdLine, Count:=1
  Else
   MsgBox "1~32767の数値を入力してください。終了します。"
   Exit Sub
  End If

End Sub

Sub 表_行削除()

  Dim myLines As String
  Dim i As Integer

  If Selection.Information(wdWithInTable) = False Then Exit Sub

  Do
    myLines = InputBox("行数を入力してください。", "行の削除", 1)
    If myLines = vbNullString Then Exit Sub
  Loop While IsNumeric(myLines) = False

  If CLng(myLines) >= 1 And CLng(myLines) <= 32767 Then

   For i = 1 To myLines
     If Selection.Information(wdWithInTable) = True Then
       Selection.Rows.Delete
     Else
       Exit For
     End If
   Next i

  Else
   MsgBox "1~32767の数値を入力してください。終了します。"
   Exit Sub
  End If

End Sub

-コード
-,