1

次のように、テーブルを生成してWord文書に挿入しようとしています。

object missing = System.Reflection.Missing.Value;
var paragraph = miDoc.Paragraphs.Add(ref missing);

Microsoft.Office.Interop.Word.Table tablaEvaluacion = 
Globals.ThisDocument.Tables.Add(paragraph.Range, lstContacto.Count + 1, lstEvaluacion.Count + 3, ref missing, ref missing);

ただし、行数が63を超えると、例外が発生します: " COMException was unhandled by user code. The number must be between 1 and 63."

4

1 に答える 1

6

まず第一に、行のことを 100% 確信していますか? 以下の私の回答からわかるように、テーブルに 63 行を超える行を挿入しても問題はありませんが、63 列を超える列を挿入すると、説明したのと同じ問題が発生します。

とにかく、私はこれを調査しようとしました-これが私が見つけたものです:

Google の使用:

ドキュメントの使用:

  • 制限について言及されていないため、ドキュメントはここではあまり役に立ちません。

dotPeek の使用:

  • 制限を説明するコメントを見つけることを期待して、型を逆コンパイルしようとMicrosoft.Office.Interop.Word.Tablesしましたが、運がありませんでした。このコードは、Word を使用して関数を呼び出すだけなCOMので、Word から相互運用アセンブリを経由してコードに例外が発生する可能性が非常に高くなります。

私自身のサンプル実装を使用する:

documentA.Tables.Add(range, 01, 64); // COMException -> "The number must be between 1 and 63."
documentA.Tables.Add(range, 01, 63); // All good
documentA.Tables.Add(range, 64, 01); // All good

サンプル コードは、63 を超える列を使用しようとすると、COMException参照先がスローされることを示しています。Interop API のバージョン 15 で MS Office 2013 を実行しています。

MS Word 2013 の使用:

  • 最初にサンプル アプリケーションを使用して 63 列のテーブルを挿入し、次にドキュメントを開き、Word にさらに別の列を挿入するように要求しました。これにより、次のエラーが発生しました。

ここに画像の説明を入力

つまり、63列が挿入できる列の最大数のように見えるということです。

これが物事の解決に役立つことを願っています;)

于 2012-12-17T17:05:38.873 に答える