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

[Office用アプリ]開発に役立つ資料集前のページ

「Save to Drive」ボタンを試してみました。次のページ

関連記事

  1. Office アドイン

    [Office用アプリ]JavaScript API for Office ライブラリ v1.1

    2014/01/24 追加記事を書きました。・JavaScript…

  2. Office関連

    「傍点をふる」をWord 2007/2010で簡単に使う方法

    Wordで文字列を強調したいときに便利なのが「傍点をふる」コマンド。…

  3. Office関連

    ルビ(ふりがな)を一括設定するWordマクロ

    2016/10/28 追記:改良版のマクロを書きました。…

  4. Office関連

    PowerPoint 2013でYouTubeの動画を挿入する。

    2014/5/23 追記:いつの間にか「ビデオの挿入ダイアログ」が…

  5. Office関連

    [Excel Services ECMAScript]選択範囲が変更されたときのイベントを利用する。…

    埋め込んだExcelワークブックの、選択範囲が変更されたときのイベント…

  6. Office関連

    未読アイテムの件数を取得するOutlookマクロ

    「Outlook 未読 件数 マクロ」といったキーワード検索でのアクセ…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP