【VBA】Word文書内の表の行・列を削除する

エクセルVBAで使用するコードの備忘録。VBAで指定したWord文書内に含まれる表の行や列を削除するコード。

スポンサーリンク

Wordファイルを開く

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

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

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

表の行・列を削除する

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

行や列を表すオブジェクトはTableオブジェクト下のRowsやColumnsです。配列となっているのでIndexを指定することで上から何行目、あるいは左から何列目かを指定してやります。指定個所を削除するにはDeleteメソッドを使用すればOKです。

サンプルコード

下記のサンプルコードでは、Word文書に含まれるIndex番目の表の指定行・列を削除しています。

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

Public Sub DeleteRowColumn()
    
    '--- 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)
    
    '--- 行・列の削除 ---'
    objDoc.Tables([Index]).Rows([行番号]).Delete
    objDoc.Tables([Index]).Columns([列番号]).Delete
    
End Sub