これは私の質問hereに似ていますが、私の回避策はこれらのインスタンスには役に立たず、原因はより明確です。コピーされたシートの名前を保持するフォルダーからシートを追加するワークブック レベルのカスタマイズがあります。これはうまく機能し、ユーザーがシートの名前を変更しない限り問題は発生しません。ユーザーがシートの名前を変更し、ワークブックを保存してから戻ってきた場合、ワークブックまたはワークシートを参照するアクションを実行しようとすると、エラーが発生します。
Microsoft.VisualStudio.Tools.Applications.Runtime.ControlNotFoundException:
This document might not function as expected because the following control is missing:
Sheet5. Data that relies on this control will not be automatically displayed or updated,
and other custom functionality will not be available. Contact your administrator or the
author of this document for further assistance. --->
System.Runtime.InteropServices.COMException: Programmatic access to the Microsoft Office
Visual Basic for Applications project system could not be enabled. If Microsoft Office
Word or Microsoft Office Excel is running, it can prevent programmatic access from being
enabled. Exit Word or Excel before opening or creating your project.
Excel を閉じて開いても解決せず、シートを新しい位置に移動しても解決せず、複数のシートが追加されている場合は問題のあるシートを削除しても解決しません。基本テンプレートには 6 枚のシートがあり、シートを中央 (必要な場所) と最後 (キック用) に追加してみました。これは役に立たないようです。追加したシートをすべて削除し、ワークブックを保存して再度開くと、機能が復元されます。追加されるシートは VSTO の名前付きシートではありませんが、ほとんどの場合、番号または名前で参照されます (最初に 6 つのシートがあるため、3 つ後に追加された場合、インデックスは に4 to (ThisWorkBook.Sheets.Count-3)
なりif Sheet.Name
ます。元の 6 からの名前 (決してそうなることはなく、私は防止策を作成しました)。
私の問題は、私が設計したレポート シートが機能しない場合に、ユーザーが一般的なレポート シートを追加できるようにする必要があることです。これは、シートを追加し、名前を変更して保存し、戻ってくることができるようにする必要があることを意味します。このエラーは、シートが保存され、閉じられ、再度開かれるまで発生しません。また、VS2012 がインストールされているマシンでこれを複製することはできません。プロジェクトがそのコンピューターでまったく作業されていない場合でも (VSTO がインストールされたばかりです)。これらの VS2012 マシンはすべて、他の Excel VSTO プロジェクトに使用されていました。ただし、XP-Win8 と Excel Office '07-365 では複製できます。
**それで、私の要約した質問: ユーザーがシートを追加して名前を変更できるようにする方法はありますか (できれば VSTO の外部で) Runtime.ControlNotFoundException
、.
ありがとう。