エクセルVBAで使用するコードの備忘録。VBAで指定したWord文書内に含まれる表内の値ををまとめて左揃え、中央揃え、右揃えにするコード。表自体ではなく、表内の値の位置を変更します。Word文書内での表自体の配置を揃えたい場合はこちらをご参照ください。
Wordファイルを開く
Wordファイルを開くにはワードファイルを操作するためのオブジェクトを作成する必要があります。作成する際のコードの書き方は参照設定を使う場合とそうでない場合で異なりますが(詳しくはこちらをご覧ください)、基本的には参照設定を使うことをお勧めします。
参照設定は以下のように、VBAのコードエディタから「ツール > 参照設定」と進み、「Microsoft Word XX.X Object Library」にチェックを入れることで設定できます(XX.X部分の数字はバージョンによって変わります)。
パスワード付ファイルを開く方法などWordファイルを開く方法についてはこちらでも記載していますので詳しく知りたい場合はご参照ください。
表内の値の位置を揃える
Word文書内に含まれる表(Table)はWord.Documentオブジェクト下のTablesオブジェクトで管理されています。文書内に複数の表が含まれる可能性が考えられるのでTablesオブジェクトは配列になっています。そのためIndex番号を使って何番目の表なのかを指定してやる必要があります。
表内の値の位置を変更する場合は、揃えたいセルを表すRangeオブジェクトのParagraphFormatオブジェクトに対してAlignmentプロパティを設定してやります。Alignmentプロパティとして取ることができる値はいろいろありますが、下記では左揃え、中央揃え、右揃えの場合をメモしておきます。それ以外の値についてはマイクロソフトのこちらのページをご参照ください。
定数 | 値 | 説明 |
wdAlignParagraphLeft | 0 | 左揃え |
wdAlignParagraphCenter | 1 | 中央揃え |
wdAlignParagraphRight | 2 | 右揃え |
サンプルコード
下記のサンプルコードでは、Word文書に含まれるすべての表の表内の値をすべて中央揃えにしています。右揃えなどにしたい場合は、上記表の定数を適宜指定してください。
なお、コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。
Public Sub AlignTableItems()
'--- 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).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
Next i
'--- ワードドキュメントを閉じる ---'
objDoc.Close
End Sub