Excel Range.Find和维护用户select的查找选项

当使用Excel Interop API自动执行excel时,我可以使用Range.Find方法轻松地进行范围search。 我正在通过查找的LookIn,LookAt,SearchOrder,SearchDirection和MatchCase选项。 如MSDN文档所述,将传入此方法的值保留到用户设置中,所以下次用户打开查找表单时,将会select在Range.Find方法中使用的选项。

在执行程序化查找之前和之后,我需要坚持查找选项的值。 所以我想捕获当前的查找选项,然后执行Range.Find,然后将查找选项设置回search前设置的选项。 但是,我没有看到查找选项是公开的。 任何想法如何得到这些?

我基本上希望检索LookIn,LookAt,SearchOrder,SearchDirection和MatchCase的当前查找选项值。

更新迄今为止我能find的最有趣的事情是,您可以访问Excel应用程序对话框 – 对话框界面 。 所以在这里,我可以访问FormulaFind对话框,该对话框与“查找和replace”对话框略有不同,但可能会导致我正在查找的一些属性。 我没有任何运气,但也许有一种方法可以通过这种forms使用reflection来访问属性。 我会继续尝试这个。

// xlDialogFormulaFind, xlDialogFormulaReplace Excel.Dialog dialog = this.Application.Dialogs.Item[Excel.XlBuiltInDialog.xlDialogFormulaFind]; 

那么,我不确定你是否会考虑这个方法,但是如果可能会有所帮助的话,我会在这里进行一下。

我会做的是,我会创build一个registry项,保存您想要坚持的值。 我可以调用RegistryKey.GetValue(valuename)来检索值,只要没有抛出exception。

只要该registry键保持不变,并且您有足够的权限来访问registry项,您应该始终能够获得相同的值。

希望我们真的可以在这里使用应用程序设置,这将使它更容易,但是,正如你可能已经知道,根据这篇文章 ,vsto加载项不喜欢它。

您不能在托pipe.NET Framework的非托pipe应用程序中使用应用程序设置。 在Visual Studio加载项,C ++ for Microsoft Office,Internet Explorer控制托pipe或Microsoft Outlook加载项和项目等环境中,设置将不起作用。

希望这可以帮助。