3

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];
4

1 に答える 1

0

あなたがこのアプローチを検討するかどうかはわかりませんが、役に立つかもしれない場合に備えて、ここで試してみます.

私がすることは、永続化したい値を保持するレジストリ キーを作成することです。次に、例外がスローされなければ、 RegistryKey.GetValue(valuename)を呼び出して値を取得できます。

そのレジストリ キーが変更されずにそこにとどまり、レジストリ キーにアクセスするための十分な権限を持っている限り、常に同じ値を取得できるはずです。

ここで実際にアプリケーション設定を使用できればもっと簡単になると思いますが、ご存知かもしれませんが、この記事によると、vsto アドインはそれを好みません。

.NET Framework をホストするアンマネージド アプリケーションでは、アプリケーション設定を使用できません。設定は、Visual Studio アドイン、C++ for Microsoft Office、Internet Explorer でのコントロール ホスティング、Microsoft Outlook アドインおよびプロジェクトなどの環境では機能しません。

お役に立てれば。

于 2012-09-19T14:50:36.980 に答える