【VBA】Word文書内の表を左揃え・中央揃え・右揃えにする

エクセルVBAで使用するコードの備忘録。VBAで指定したWord文書内に含まれる表をまとめて左揃え、中央揃え、右揃えにするコード。表の中の値ではなく、表自体の位置をWord文書内で変更します。表内の値の位置を揃えたい場合はこちらをご参照ください。

スポンサーリンク

Wordファイルを開く

Wordファイルを開くにはワードファイルを操作するためのオブジェクトを作成する必要があります。作成する際のコードの書き方は参照設定を使う場合とそうでない場合で異なりますが(詳しくはこちらをご覧ください)、基本的には参照設定を使うことをお勧めします。

参照設定は以下のように、VBAのコードエディタから「ツール > 参照設定」と進み、「Microsoft Word XX.X Object Library」にチェックを入れることで設定できます(XX.X部分の数字はバージョンによって変わります)。

パスワード付ファイルを開く方法などWordファイルを開く方法についてはこちらでも記載していますので詳しく知りたい場合はご参照ください。

Word文書内の表の配置を揃える

Word文書内に含まれる表(Table)はWord.Documentオブジェクト下のTablesオブジェクトで管理されています。文書内に複数の表が含まれる可能性が考えられるのでTablesオブジェクトは配列になっています。そのためIndex番号を使って何番目の表なのかを指定してやる必要があります。

表のWord文書内での配置を揃える場合は、揃えたい表をあらわすTableオブジェクトのRowsオブジェクトに対してAlignmentプロパティを設定してやります。Alignmentプロパティとして取ることができる値としては以下の定数があります。

定数説明
wdAlignRowLeft0左揃え(デフォルト)
wdAlignRowCenter1中央揃え
wdAlignRowRight2右揃え

サンプルコード

下記のサンプルコードでは、Word文書に含まれるすべての表を中央揃えにしています。右揃えなどにしたい場合は、上記表の定数をwdAlignRowCenterの代わりに指定してください。

なお、コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

Public Sub AlignTablesInWord()
    
    '--- Wordのアプリケーションオブジェクト ---'
    Dim objWord As Word.Application
    Set objWord = New Word.Application
    objWord.Visible = True
        
    '--- 開くワードファイルのパス ---'
    Dim docPath As String
    docPath = "[ワードファイルのパス]"
    
    '--- ワードドキュメントを開く ---'
    Dim objDoc As Word.Document
    Set objDoc = objWord.Documents.Open(docPath)
    
    '--- 中央揃え ---'
    Dim i As Long
    For i = 1 To objDoc.Tables.Count
        objDoc.Tables(i).Rows.Alignment = wdAlignRowCenter
    Next i
    
    '--- ワードドキュメントを閉じる ---'
    objDoc.Close
    
End Sub