Excelアプリケーションがセル編集モードかどうかを確認する方法は?
-
03-07-2019 - |
質問
.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
使用している言語については言及していません。 SZLの機能はVBで記述されています。 C#を使用しているため、変換する必要がありました。うまくいきました。同等のC#コードを次に示します。
bool IsInEditMode(ref Microsoft.Office.Interop.Excel.Application exapp)
{
if (exapp.Interactive == false)
{
return false;
}
else
{
try
{
exapp.Interactive = false;
exapp.Interactive = true;
return false;
}
catch
{
return true;
}
}
}
所属していません StackOverflow