Excelのエラー メッセージ:「保存中にエラーが検出されました...」
問題
次のシナリオを検討してください。Microsoft Officeを自動化するプロジェクトで作業を行っています。Microsoft Visual Basic for Applicationsエディターを開きました。think-cellのExcelデータリンクが含まれているExcelワークシートも開きます (「21. Excel データ リンク」を参照)。
think-cellのExcelデータ リンクが含まれているExcelワークシートを削除します。Excelに 「オブジェクトが必要です」というエラー メッセージが表示される可能性があります。
Excelファイルを保存しようとすると、Excelに以下のメッセージが表示されます:
「[ファイル名]の保存中にエラーが検出されました。」というエラーメッセージが表示されます。一部の機能を削除または修復すると、Microsoft Excelファイルを保存できるかもしれません。新しいファイルを修復するには、[続行] をクリックします。ファイルの保存をキャンセルするには [キャンセル] をクリックしてください。」
[続行] をクリックすると、修復できません。
Excel 2007 または 2010: ファイルを保存する代わりに新しいExcelワークシートを挿入しようとすると、Excelはクラッシュします。
原因
この問題はExcelのバグが原因です。この件について、弊社はMicrosoftに報告しています。貴社にMicrosoft Officeサポートの連絡先があり、この問題についてMicrosoftに連絡して修正プログラムを要請なさりたい場合は、Microsoftケース番号114072911657591を使用してください。このエラーは think-cell なしでも再現できます。
think-cellを使用しないで再現
以下の手順を行ってください。
- 新しい空のファイルでExcelを起動します。
- 最初のワークシート「Sheet1」のセルA1とA2に「100」と入力します。
- 「Sheet1」でA1:A2のセルを選択し、Ctrl + Cを押してコピーします。
- (Excel 2013 以降で再現しようとする場合のみ、2番目のワークシートを挿入してください。これより古いExcelバージョンでは3つのデフォルトワークシートがあるため、これは必須ではありません)。
- Alt + F11を押して、Microsoft Visual Basic for Applicationsエディター ウィンドウを開き、これを開いたままにします。
- 新しい空のファイルでWordを起動します。
- Wordで[ホーム] → [貼り付け] → [形式を選択して貼り付け] → [リンクを貼り付け: ] に進みます。Microsoft Excelワークシート オブジェクト] を選択し、[OK] をクリックします。
- Excelで [Sheet1] タブを右クリックし、[削除] をクリックします。
-
Excelファイルの保存を試行してください。Excelに
「[ファイル名]の保存中にエラーが検出されました。」というエラーメッセージが表示されます。一部の機能を削除または修復すると、Microsoft Excelファイルを保存できるかもしれません。新しいファイルを修復するには、[続行] をクリックします。ファイルの保存をキャンセルするには [キャンセル] をクリックしてください。」[続行] をクリックすると、修復できません。
Excel 2007 または 2010: ファイルを保存する代わりに新しいExcelワークシートを挿入しようとすると、Excelはクラッシュします。
解決策
このエラーが発生した場合は、新しいExcelドキュメントでデータを保存するか、変更を破棄して元のドキュメントを修復できます。
新しいExcelドキュメントでデータを保存
ドキュメントへの変更を保存するには、変更したワークシートを新しいExcelドキュメントにコピーして保存します。
今後、このエラーを回避するためにExcelドキュメントを修復
ExcelドキュメントはVisual Basic for Applications(VBA)プロジェクトをドキュメントから削除すると修復できます。ただし、Visual Basicエディターで削除するだけでは不十分です。次の手順に従ってください。
- ドキュメントのバックアップを作成します。
- 無料のStructured Storage Viewerをダウンロードして実行してください。
- Structured Storage Viewerでドキュメントを開きます。
- ドキュメントのツリー ビューで「_VBA_PROJECT_CUR」を選択し、Delを押して削除します。
- 削除を確認し、Structured Storage Viewerを閉じます。
- Excelでドキュメントを開きます。
- [Microsoft Visual Basic] → [ファイルが見つかりません] ダイアログボックスが開きます。[OK] を押します。
- 別の [修復] ダイアログ ボックスが表示され、[失われたVisual Basicプロジェクト] が含まれています。[閉じる] を押します。
- ドキュメントを保存します。
これでthink-cellのリンクを含むワークシートを削除し、ドキュメントを保存できるようになります。