Visual studio 2010 Excel范围。查找和维护用户选择的查找选项

Visual studio 2010 Excel范围。查找和维护用户选择的查找选项,visual-studio-2010,excel,vsto,excel-interop,Visual Studio 2010,Excel,Vsto,Excel Interop,当使用excel互操作API自动化excel时,我可以使用该方法轻松地进行范围搜索。我正在传递查找的LookIn、LookAt、SearchOrder、SearchDirection和MatchCase选项。正如MSDN文档所指出的,这会将传递到此方法的值持久化到用户设置中,因此用户下次打开查找表单时,将选择我在Range.find方法中使用的选项 在执行编程查找之前和之后,我需要保持find选项的值。因此,我想捕获当前的查找选项,然后执行Range.find,然后将查找选项设置回搜索前设置的选

当使用excel互操作API自动化excel时,我可以使用该方法轻松地进行范围搜索。我正在传递查找的LookIn、LookAt、SearchOrder、SearchDirection和MatchCase选项。正如MSDN文档所指出的,这会将传递到此方法的值持久化到用户设置中,因此用户下次打开查找表单时,将选择我在Range.find方法中使用的选项

在执行编程查找之前和之后,我需要保持find选项的值。因此,我想捕获当前的查找选项,然后执行Range.find,然后将查找选项设置回搜索前设置的选项。但是,我看不到find选项是可公开访问的。有没有办法弄到这些

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

更新 到目前为止,我能找到的最有趣的事情是,您可以访问Excel应用程序对话框-。所以在这里,我可以访问FormulaFind对话框,它与Find and Replace对话框略有不同,不过可能会导致一些我正在寻找的属性。我没有任何运气,但也许有一种方法可以使用反射通过这个表单访问属性。我会用这个继续尝试

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

嗯,我不确定你是否会考虑这个方法,但我会给你一个机会,以防它有帮助。 我要做的是,创建一个注册表项,其中保存您想要持久化的值。然后我可以调用来检索值,前提是没有抛出异常

只要注册表项保持不变,并且您有足够的权限访问注册表项,您就应该能够始终获得相同的值

希望我们可以在这里真正使用应用程序设置,这将使它更容易,但是,正如您可能知道的,vsto插件不喜欢它,根据

不能在以下非托管应用程序中使用应用程序设置: 托管.NET Framework。设置在此类环境中不起作用 作为VisualStudioAddioSINS,C++用于微软Office,控件托管 Internet Explorer或Microsoft Outlook加载项和项目


希望这有帮助

我在这里发现了一个类似的线程,它并没有解决这个问题:,尽管提出了编写自己的find方法的想法(我不喜欢这样做)。我不确定,但我认为它不像你提到的那样公开。也许您可以创建一个名为FindOptions的类,并根据用户的输入设置变量。然后,每次他们进行新的搜索时,您都可以创建FindOptions的实例,设置选项,并将其放入“Finds”堆栈中,以便恢复到以前的任何搜索条件。这样的事情是不可能的吗?我明白你的意思,尽管问题在于找到当前的值。我可以创建一个FindOptions类来持久化这些值,但是,我需要从某个地方设置这些值。我需要找到可以访问当前“查找选项”值的位置。您将如何设置FindOptions类中的属性是我的意思…?您是指创建一个查找选项窗体,用户可以在其中设置其默认值吗?如果我理解正确,您的用户将已经使用Excel的“查找”对话框设置了查找选项并设置了一些选项,对吗?你想获得这些设置吗?嗯…我真的不认为这是可能的。据我所知,唯一一次您可以通过Application.FindFormat对象进行特殊查找(如查找具有特定颜色、格式的单元格等)来获取这些设置……但不幸的是,这并不能满足您的需要。