.net の COM Interop を使用して Excel アドインを作成しています。ダイアログをポップアップするコマンドがあり、ダイアログから、いくつかのシートの使用範囲からデータを収集するなどの作業を行います。問題は、セルが編集モードの場合、必要な呼び出しの一部で例外がスローされることです。最初にセルの編集を終了するようにユーザーに警告できるように、Excel が編集モードであることを事前に判断する方法が必要です。
何か案は?
.net の COM Interop を使用して Excel アドインを作成しています。ダイアログをポップアップするコマンドがあり、ダイアログから、いくつかのシートの使用範囲からデータを収集するなどの作業を行います。問題は、セルが編集モードの場合、必要な呼び出しの一部で例外がスローされることです。最初にセルの編集を終了するようにユーザーに警告できるように、Excel が編集モードであることを事前に判断する方法が必要です。
何か案は?
この情報を提供することになっている Application.Ready プロパティがありますが、実際には確実に機能しません。ハックアラウンドについては、こちらを参照してください。
また、.net コードの実行中に Application.Interactive=false を設定することも検討してください。
この機能を試してください:
Function IsInEditMode(ByRef exapp As Excel.Application) As Boolean
If exapp.Interactive = False Then
Return False
Else
Try
exapp.Interactive = False
exapp.Interactive = True
Return False
Catch
Return True
End Try
End If
End Function