Office関連

すべてのテーブルの結合を解除するWordマクロ

すべてのテーブルのセル結合を解除するWordマクロを考えてみました(Word 2003と2010で動作を確認)。
ExcelのUnMergeのように結合を解除するメソッドが標準で用意されていないので、若干複雑な処理になっています。
特に横方法の結合については判別がややこしく、下記のコードではテーブルのXMLから取得しています。

※ 下記コードは入れ子になっているテーブルには未対応です。

Option Explicit

Private Sub UnMergeAllTables()
'全テーブルの結合解除
  UnMergeAllTablesR
  UnMergeAllTablesC
  Selection.HomeKey Unit:=wdStory
End Sub

Private Sub UnMergeAllTablesR()
'全テーブルの縦方向の結合解除
  Dim rowspan As Long
  Dim t As Word.Table
  Dim c As Word.Cell
  
  For Each t In ActiveDocument.Tables
    For Each c In t.Range.Cells
      c.Select
      With Selection
        rowspan = (.Information(wdEndOfRangeRowNumber) - .Information(wdStartOfRangeRowNumber)) + 1
        If rowspan <> 1 Then
          .Cells.Split NumRows:=rowspan, NumColumns:=1, MergeBeforeSplit:=False
        End If
      End With
    Next
  Next
End Sub

Private Sub UnMergeAllTablesC()
'全テーブルの横方向の結合解除
  Dim t As Word.Table
  
  For Each t In ActiveDocument.Tables
    UnMergeTableC t
  Next
End Sub

Private Sub UnMergeTableC(ByRef tbl As Word.Table)
'指定したテーブルの横方向の結合解除
  Dim d As Object
  Dim colspan As Long
  Dim i As Long, n As Long
  
  Set d = CreateObject("MSXML2.DOMDocument")
  If d.LoadXML(tbl.Range.XML) Then
    With d.SelectNodes("/w:wordDocument/w:body/wx:sect/w:tbl/w:tr")
      For i = 0 To .Length - 1
        With .Item(i).SelectNodes("w:tc")
          For n = 0 To .Length - 1
            If .Item(n).SelectNodes("w:tcPr/w:gridSpan").Length > 0 Then
              colspan = CLng(.Item(n).SelectNodes("w:tcPr/w:gridSpan").Item(0).Attributes(0).Text)
              'Debug.Print colspan, tbl.Cell(i + 1, n + 1).Range.Text '確認用
              tbl.Cell(i + 1, n + 1).Split NumRows:=1, NumColumns:=colspan
            End If
          Next
        End With
      Next
    End With
  End If
End Sub

関連記事

  1. Office関連

    A1セルを選択してから保存するExcelアドイン

    @yu_tang_さんのツイートで面白いものがありました。…

  2. Office関連

    Excel Services JavaScript APIを試してみました(2)

    前回の記事で、JavaScriptコードを貼り付けてExcelワークブ…

  3. Office関連

    Microsoft MVP for Outlook を初受賞しました。

    2010年7月から「Office System」分野でMicrosof…

  4. Office関連

    「いちばんやさしいPowerPoint VBAの教本」レビュー

    「インストラクターのネタ帳」で有名な伊藤さんが執筆された書籍第二弾、「…

  5. Office関連

    [Office用アプリ]開発ツール「Napa」のインストール方法

    Office 365にはブラウザー上で直接Office用アプリの開発が…

  6. Office関連

    Outlookを使ってGmail送信を行うVBAマクロ

    下記G Suite アップデート ブログにある通り、今年の6月には“安…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP