Excelアプリケーションがセル編集モードかどうかを確認する方法は?

StackOverflow https://stackoverflow.com/questions/221984

  •  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;
            }
        }

    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top