Excel Interop API を使用して Excel を自動化する場合、メソッドRange.Findを使用して範囲検索を簡単に行うことができます。検索の LookIn、LookAt、SearchOrder、SearchDirection、および MatchCase オプションを通過しています。これは、MSDN のドキュメントに記載されているように、このメソッドに渡された値をユーザー設定に保持するため、次回ユーザーが検索フォームを開くと、Range.Find メソッドで使用したオプションが選択されます。
プログラムによる検索を実行する前後に、検索オプションの値を永続化する必要があります。そのため、現在の検索オプションをキャプチャしてから、Range.Find を実行し、検索オプションを検索前に設定されていたオプションに戻します。ただし、検索オプションが公開されているとは思いません。これらを取得する方法についてのアイデアはありますか?
私は基本的に、LookIn、LookAt、SearchOrder、SearchDirection、および MatchCase の現在の検索オプション値を取得しようとしています。
更新 これまでに見つけた最も興味深いことは、Excel アプリケーション ダイアログ -ダイアログ インターフェイスにアクセスできることです。ここでは、検索と置換ダイアログとは少し異なりますが、探しているプロパティのいくつかにつながる可能性がある FormulaFind ダイアログにアクセスできます。運が悪かったのですが、リフレクションを使用してこのフォームからプロパティにアクセスする方法があるかもしれません。これで何とかやってみます。
// xlDialogFormulaFind, xlDialogFormulaReplace
Excel.Dialog dialog = this.Application.Dialogs.Item[Excel.XlBuiltInDialog.xlDialogFormulaFind];