none
Word でテーブルの列の挿入をVBAで実行するとキーボードで操作した場合と動作が異なります。 RRS feed

  • 質問

  • お世話になっております。

    Word 2013 を使用しています。(OSはWindows10です)

    テーブルに列を挿入するVBAを作成していますが、結合したセルが存在する場合に期待した動作になりません。

    以下に操作を記述します。

    操作
      3行4列の以下のようなテーブルを用意します。
      2行1列目から3列目を結合する。
      3行2列目から3列目を結合する。

    ■マウス・キーボードによる操作
      (1) 1行2列目のセルを選択する。
      (2) コンテキストメニューで[挿入]-[左に列を挿入する]を選択する。
      すると、以下の位置に挿入されます。
        (1,2)
        (2,1)
        (3,2)
      追加されるセル幅は3行とも同じで属性は右隣りのセルと同じになっています。

    ■マクロの記録で上記(2)のマクロを作成すると次のようになります。
         Selection.InsertColumns

    ■上記(1)の後このマクロを実行すると以下のように挿入されます。
        属性はセル幅を含めて右隣りのセルと同じになっています。
        (1,2)
        (2,4) 元ののセルの右側に挿入されます。
              元のテーブルが3行3列で右端のセルだった場合、このセルは左の元のセルと同じ属性で挿入されます。
        (3,2) このセル幅は結合していたセルの幅と同じになります。

        このため、列幅が異なる時にテーブルの右側がでこぼこします。

       InsertColumns をリファレンスで調べたら、左側に列が追加されると記述されていますが、結合セルについての記述が見当たりません。 

      マウス・キーボードでの操作と同じように、左側に同じ幅で挿入されるようにしたいのですが、VBAで、どのように記述すればよろしいでしょうか?
      よろしく、お願いします。

    2016年2月22日 3:18

回答

  • こんな?

    Sub Macro1()
        Dim t As Table
        Set t = Selection.Tables(1) 'とりあえず現在カーソルのあるテーブルを対象に
        
        Dim c As Cell
        Set c = t.Cell(1, 2)
        c.Select
        
        Dim cmd As CommandBarButton
        Set cmd = Application.CommandBars.FindControl(ID:=3685)
        cmd.Execute
    End Sub

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク motosan 2016年2月22日 6:41
    2016年2月22日 4:00

すべての返信

  • こんな?

    Sub Macro1()
        Dim t As Table
        Set t = Selection.Tables(1) 'とりあえず現在カーソルのあるテーブルを対象に
        
        Dim c As Cell
        Set c = t.Cell(1, 2)
        c.Select
        
        Dim cmd As CommandBarButton
        Set cmd = Application.CommandBars.FindControl(ID:=3685)
        cmd.Execute
    End Sub

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク motosan 2016年2月22日 6:41
    2016年2月22日 4:00
  • 教えていただいた方法でできました。
    ありがとうございます。
    2016年2月22日 7:20