【发布时间】:2012-04-24 18:32:10
【问题描述】:
当使用 Excel 互操作 API 自动化 excel 时,我可以使用 Range.Find 方法轻松地进行范围搜索。我正在通过查找的 LookIn、LookAt、SearchOrder、SearchDirection 和 MatchCase 选项。正如 MSDN 文档所指出的那样,将传递给此方法的值保存到用户设置中,因此下次用户打开查找表单时,将选择我在 Range.Find 方法中使用的选项。
我需要在执行程序化查找之前和之后保留查找选项的值。所以我想捕获当前的查找选项,然后执行 Range.Find,然后将查找选项设置回我搜索之前设置的选项。但是,我没有看到 find 选项可以公开访问。关于如何获得这些的任何想法?
我基本上是在寻找 LookIn、LookAt、SearchOrder、SearchDirection 和 MatchCase 的当前查找选项值。
更新 到目前为止,我能找到的最有趣的事情是您可以访问 Excel 应用程序对话框 - Dialogs Interface。所以在这里,我可以访问 FormulaFind 对话框,它与 Find and Replace 对话框略有不同,但可能会导致我正在寻找的一些属性。我没有运气,但也许有一种方法可以使用反射通过这种形式访问属性。我会继续尝试这个。
// xlDialogFormulaFind, xlDialogFormulaReplace
Excel.Dialog dialog = this.Application.Dialogs.Item[Excel.XlBuiltInDialog.xlDialogFormulaFind];
【问题讨论】:
-
我在这里找到了一个类似的帖子,但并没有解决问题:mrexcel.com/forum/showthread.php?t=520336,虽然提出了编写自己的 find 方法的想法(我不想这样做)。
-
我不确定,但我不认为它像你提到的那样是公开的。也许您可以创建一个名为 FindOptions 的类并根据用户的输入设置变量。然后,每次他们进行新搜索时,您都可以创建 FindOptions 的实例,设置选项,并将其放入“查找”堆栈中,以便您可以恢复到任何以前的搜索条件。这样的事情是不可能的吗?
-
我明白你在说什么,但问题在于找到当前值。我可以创建一个 FindOptions 类来保存这些值,但是,我需要从某个地方设置这些值。我需要找到可以访问当前查找选项值的位置。你将如何设置 FindOptions 类中的属性是我所得到的......?
-
您是指创建一个查找选项表单,用户可以在其中设置默认值吗?
-
如果我理解正确,您的用户应该已经通过使用 Excel 的查找对话框并设置了一些选项来设置查找选项,对吧?你想获得这些设置吗?嗯......我真的不认为这是可能的。我唯一知道您可以获得这些设置的方法是通过 Application.FindFormat 对象通过特殊查找(例如查找具有某些颜色、格式等的单元格)...但这并不能满足您的需要,很遗憾。
标签: visual-studio-2010 excel vsto excel-interop