Ich entwickle ein Excel 2007-Add-In mit Visual Studio Tools für Office (2008). Ich habe ein Blatt mit mehreren ListObjects darauf, die beim Start an Datatables gebunden werden. Wenn sie gebunden sind, werden sie automatisch skaliert..NET - Excel-ListObject-Autosizing auf Datenbasis
Das Problem tritt auf, wenn sie neu gebunden werden. Ich habe eine benutzerdefinierte Schaltfläche in der Multifunktionsleiste, die zurück in die Datenbank und ruft verschiedene Informationen auf der Grundlage einiger Kriterien, die der Benutzer eingibt. Diese neuen Daten kommt zurück und wird an die Listobjects wieder gebunden - aber diesmal sind sie nicht geändert werden und ich erhalte eine Ausnahme:
Listobject nicht gebunden werden können, weil es kann die Daten nicht passen der Größe verändert werden. Das ListObject konnte keine neuen Zeilen hinzufügen. Dies kann daran liegen, dass Objekte unterhalb des Listenobjekts nicht verschieben kann.
Innere Ausnahme: "Insert-Methode der Range-Klasse ist fehlgeschlagen"
Grund: Microsoft.Office.Tools.Excel.FailureReason.CouldNotResizeListObject
Ich war nicht in der Lage etwas sehr sinnvoll zu finden Dieser Fehler bei Google oder MSDN. Ich habe versucht, das eine Weile herauszufinden, aber ohne Erfolg.
Basic-Code-Struktur:
//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);
Beachten Sie, dass diese Ausnahme tritt auf, selbst wenn die Listobject schrumpft, und zwar nicht nur, wenn es wächst.