特定のドキュメントでアプリケーション レベルのアドインから任意の種類のメタデータを保存する場合は、データをある種の文字列 (base64、xml など) にシリアル化し、それを「非常に非表示の」シートに保存できます。可視性が「非常に非表示」に設定されたワークシートには、プログラミング API を介してのみアクセスできます。そのため、ユーザーが非表示のシートを見つけたとしても、アクセスすることはできず、実際にそこにあることさえ知りません。
// create sheet for this save
workbook.Sheets.Add();
newSettingsWorksheet = workbook.ActiveSheet;
newSettingsWorksheet.Name = hiddenSheetName;
newSettingsWorksheet.Visible = Excel.XlSheetVisibility.xlSheetVeryHidden;
注意すべき重要な点の 1 つは、32767 文字 (セルに収まる最大文字数) を超える文字列を保存する場合は、それをチャンクに分割し、複数のセルに分散させる必要があることです。
発生している COM 例外に関しては、COM オブジェクト (例: ワークシート、セル、または Excel に属するもの) に触れるすべての要求に対して、Excel が別のオブジェクトでビジー状態の場合、いつでも COM 例外をスローできることに注意してください。要求 (例: ユーザーが入力中、数式を再計算中)。予想される例外は次のとおりです。
HRESULT: 0x800AC472 (無視)
HRESULT: 0x8000101A (後で再試行)
Excel アプリの開発者がこれを行っているのは、アドインが Excel 自体の見栄えを悪くしたり応答しなくなったりしないようにするためだと思います。