このマクロは、ワード文書中のすべての表の配置を自動で一括変更するマクロ(Word VBA)です。
ワード文書中に表が沢山ある場合、それらの配置を一つ一つ変更するのは大変です。
そのようなときにこのマクロが役立ちます。
\Word VBAを学べる貴重な一冊 /
概要
以下に、このマクロの概要を示します。
このマクロを実行すると、上のイラストのように、ワード文書中のすべての表の配置が揃います。
配置は、左、中央、右の中から選べます。
このように、非常にシンプルなマクロです。
詳細説明
マクロの準備
1.こちらの記事に記載したステップ①の手順1~6までを実施した後、ステップ①の手順7で、この記事の最後にあるコードを標準モジュールのModule1にコピペします
コピペすると、以下の状態になります。
2.こちらの記事に記載したステップ①の8から22までを行います
(ステップ①の11では、「Project.Module1.AlignTables」を選択してから、追加ボタンを押してください(以下のイラストのようにしてください))
(ステップ①の13では、お好きなアイコンを選んでください)
(ステップ①の20での保存名は何でもかまいません)
3.こちらの記事に記載したステップ②を行います
ステップ②を行うことで、このマクロをどのワード文書からも呼び出せるようになります。
(このマクロは、配置を揃えたい表を含む文書を開いて、そこからマクロを呼び出すことが基本の使用方法になるため、ステップ②を行う方が便利です)
以上でマクロの準備が整いました!
マクロの使用方法
このマクロを実行すると表の配置が変更されるため、必要に応じて、処理対象の文書の事前バックアップを行ってください。
このマクロは、以下の手順で簡単に実行できます。
1.配置を変更したい表を含むワード文書を開きます
2.マクロを実行します
開いたワード文書の左上に表示されている本マクロのアイコンをクリックします。
(アイコンは、各自が選んだアイコンになります)
3.表の配置を選択します
以下の入力ボックスに、配置に対応する番号を入力します(番号は、半角でも全角でもかまいません)
1:左揃え 2:中央揃え 3:右揃え
4.OKボタンを押します
OKボタンを押すと、以下の確認メッセージが出ますので、内容を確認後に「はい」を押してください。
「はい」を押すと自動で処理が始まり、以下のようなメッセージが出ますので、OKボタンを押してください。
これで、マクロの動作は終わりです。
コード
以下は、本マクロのコードです。
上で説明したように標準モジュールにコピペしてご使用ください。
(以下のコードをすべて選択して、そのまま貼り付けてください)
コードの貼り付けの説明に戻る場合は、ここをクリックしてください。
現在の公開バージョンは、V01L02です。
Sub AlignTables()
'V01L02
Dim inputBoxValue As Variant
Dim msgBoxValue As Integer
Dim tbl As Table
Dim alignMessage As String
Dim tableCount As Integer
Do
' Display an input box
inputBoxValue = InputBox("1: 左揃え 2: 中央揃え 3: 右揃え", "表の配置の選択")
' If the Cancel button is pressed, exit the subroutine
If StrPtr(inputBoxValue) = 0 Then
Exit Sub
' If the input box is empty, show a message
ElseIf inputBoxValue = "" Then
MsgBox "数字を入力してください"
' If the input box is not empty, exit the loop
ElseIf inputBoxValue <> "" Then
Exit Do
End If
Loop
' If an invalid value is entered, display an error message
If inputBoxValue <> 1 And inputBoxValue <> 2 And inputBoxValue <> 3 Then
MsgBox "無効な入力値です。1, 2, または3を入力してください。", vbCritical, "エラー"
Exit Sub
End If
' Set the message based on the value entered in the input box
Select Case inputBoxValue
Case 1
alignMessage = "左揃えにします。処理を開始してよろしいですか?"
Case 2
alignMessage = "中央揃えにします。処理を開始してよろしいですか?"
Case 3
alignMessage = "右揃えにします。処理を開始してよろしいですか?"
End Select
' Display the "Do you want to start the process?" message
msgBoxValue = MsgBox(alignMessage, vbYesNo, "確認")
If msgBoxValue = vbNo Then Exit Sub ' If "No" is selected, end the process
' Align the tables based on the value entered in the input box
For Each tbl In ActiveDocument.Tables
Select Case inputBoxValue
Case 1 ' Left align
tbl.Rows.Alignment = wdAlignRowLeft
Case 2 ' Center align
tbl.Rows.Alignment = wdAlignRowCenter
Case 3 ' Right align
tbl.Rows.Alignment = wdAlignRowRight
End Select
tableCount = tableCount + 1
Next tbl
' Display the result message
If tableCount = 0 Then
MsgBox "この文書中には表は存在しません。", vbInformation, "情報"
Else
MsgBox "処理が完了しました。" & tableCount & "個の表が処理されました。", vbInformation, "完了"
End If
End Sub
コードの貼り付けの説明に戻る場合は、ここをクリックしてください。
以上でこのマクロの紹介は終わりです。
最後まで読んでいただきましてありがとうございました!
よろしければ、他のマクロも是非見て行ってください!