2011-12-15 5 views
1

問題テーブルの別の列への参照がtable.Columns.add(ref Object BeforeColumn)に必要であるということです。私は、エラーをキャッチし、周りに私の現在の仕事のよう列幅が不均一なWordでcolumns.add(...)を使用しますか?

"Cannot access individual columns in this collection because the table has mixed cell widths."

、およびtable.Columns.DistributeWidth()を呼び出す:私はテーブル内の最後の列にアクセスしようとすると、しかし、使用して参照として渡すtable.Columns.Add(table.Columns[table.Columns.Count])

私はエラーを取得します列が均一であり、残りのコードが実行されていることを確認します。しかし、私はこの方法でセル幅のフォーマットを失いますが、残念です。

セル幅を失うことなくこれを回避できる方法はありますか?

(私は1つの方法は、このプロセスを実行する前に、すべてのセルの幅を格納することで実現し、その後、再適用する幅その後、これは簡単であるべきものと非常に高価な解決策のように思える)

+0

これは関連するようです:http://stackoverflow.com/questions/5399061/how-to-access-columns-in -a-table-that-have-ms-word-from-ms-word/8527573#8527573 – Fionnuala

+0

私はこの質問を提起する前に実際に質問に「答えました」。それはやや異なる問題です。 – Shark

答えて

1

私は」それを行うための一つの方法を見つけました。ここで私はそれにどのようにアプローチしたのですか?

*注意、私はテーブルが均一であると仮定しています。つまり、列の数はすべての行にわたって同じです。 (APIにはTable.uniform関数がありますが、説明は完全ではありません。API内では、表のすべての行に同じ数の列がある場合はTrueと表示されます。均一幅)。代わりに以下の最後には、私は、テーブル内のセルを選択し、[挿入]コマンドを使用する前に列を追加するtable.Columns.Add(table.Columns[table.Columns.Count])を使用しての

は:

//assuming table is the name of the table you want to add columns to 
table.Cell(1, table.Columns.Count).Select(); 
word.Selection selection = table.Application.ActiveWindow.Selection; 
selection.InsertColumns(); 

これは実際として、列を追加するには良い方法かもしれませんAPIを使用すると、挿入する方法の選択肢が増えます(つまり、InsertColumnsRightを使用して列の右側に挿入する)。既定でColumns.Add(...)関数は、選択の左側に挿入します