2017-02-14 20 views
0

nested table in Word私は基本的にWorkの4行の列であるテンプレートを持っています。各セルにはブックマークが設定されています。 ExcelからWordへのテーブルをこれらのブックマークの1つ(セルの内側)にコピーしました。今、私はこの「ネストしたテーブル」をフォーマットして、希望のカラム幅(特定のカラム)に合わせるようにしていますが、本当に構文に苦しんでいます。さらに、表では、最初の行にはいくつかのマージされたセルが含まれています(一部は隣接する列のセルに、一部は下の行にマージされます)。VBA Wordテーブルの行と列のサイズを変更する

私がしようとしていたコード:

With wd.Tables(2) 
    .Columns(2).Width = 20 
End With 

をしかし、私は入れません「実行時エラー 『5941』に:コレクションの要求のメンバーがありません」これは私が正しくインデックスを作成していないことを意味しますか?

Tabels(2)は、4行セルのより大きな単一列内の「ネスト化テーブル」を参照することを意味します。

インデックスを適切にインデックス化する/インデックスを見つける方法を教えてください。 そして、セルを結合したときにどのように幅を変更できますか? 私は以下を行う必要がありますか: 最初に分割>幅を調整>再マージしますか? また、私はVBA Wordでこれをやっていますが、ExcelのVBAで 'Microsoft Word xx.0 Object Library'を参照するとExcelでこれを行うことができますか?

+0

インデックスは、0から始まるない1ので、彼らはありますあなたがオブジェクトであると思う数より常に1つ少ない。たとえば、Word文書の2番目のテーブルの場合、実際に 'wd.Tables(1)'を参照する必要があり、Word文書の最初のテーブルは 'wd.Tables(0)'になります。 – Jordan

+0

@Jordanあなたは本当ですか? 「テーブル(0)」として1つのセットを持つ2つのテーブル(1つはネストされていない、もう1つはネストされていない)を持っていて、同じランタイムエラーが発生しています。テーブル(1)とテーブル(2)に設定すると、うまく機能しました – JoshD

+0

@Jordan wrong。 Wordでは、Tables、Rows、Columnsなどのオブジェクトのインデックスは1つの0で始まります。他のOfficeアプリケーションでも同じです。これが本当にネストしたテーブルであれば、 'wd.Tables(1)'の代わりに 'wd.Tables(1)'にアクセスする必要があると思われます。 – LocEngineer

答えて

1

スクリーンショットのようなネストした表を再作成しました。すなわち、その後4行の1列、ネストされた14列/行の10行の表3

次のコードは、私のためだけで正常に動作:

Sub AccessNestedTable() 
Dim tbl As Table, tbl2 As Table 
Dim wd As Document 

Set wd = ActiveDocument 

Set tbl = wd.Tables(1) 
Set tbl2 = tbl.Tables(1) 

With tbl2 
    .Columns.Width = 20 
End With 

End Sub 
+0

ありがとう、私はそれが働いている! – JoshD

関連する問題