Visual Studio Tools for Office (2008) を使用して Excel 2007 アドインを開発しています。起動時にデータテーブルにバインドされているいくつかの ListObjects を含む 1 つのシートがあります。それらがバインドされると、正しく自動サイズ調整されます。
問題は、それらが再バインドされたときに発生します。リボン バーにカスタム ボタンがあり、データベースに戻り、ユーザーが入力した条件に基づいてさまざまな情報を取得します。この新しいデータが返され、ListObjects に再バインドされますが、今回はサイズが変更されず、例外が発生します。
データに合わせてサイズを変更できないため、ListObject をバインドできません。ListObject は新しい行を追加できませんでした。これは、リスト オブジェクトの下にオブジェクトを移動できないことが原因である可能性があります。
内部例外:「Range クラスの挿入メソッドが失敗しました」
理由: Microsoft.Office.Tools.Excel.FailureReason.CouldNotResizeListObject
Google または MSDN で、このエラーについて非常に意味のあるものを見つけることができませんでした。私はしばらくこれを理解しようとしてきましたが、役に立ちませんでした。
基本的なコード構造:
//at startup
DataTable tbl = //get from database
listObj1.SetDataBinding(tbl);
DataTable tbl2 = //get from database
listObj2.SetDataBinding(tbl2);
//in buttonClick event handler
DataTable tbl = //get different info from database
//have tried with and without unbinding old source
listObj1.SetDataBinding(tbl); <-- exception here
DataTable tbl2 = //get different info from database
listObj2.SetDataBinding(tbl2);
この例外は、ListObject が大きくなったときだけでなく、縮小しているときにも発生することに注意してください。