3

当使用 Excel Interop API 自动化 excel 时,我可以使用Range.Find方法轻松地进行范围搜索。我正在通过查找的 LookIn、LookAt、SearchOrder、SearchDirection 和 MatchCase 选项。正如 MSDN 文档所指出的那样,将传递给此方法的值保存到用户设置中,因此下次用户打开查找表单时,将选择我在 Range.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];
4

1 回答 1

0

好吧,我不确定你是否会考虑这种方法,但我会在这里试一试,以防它可能会有所帮助。

我要做的是,我会创建一个注册表项来保存您想要保留的值。然后我可以调用RegistryKey.GetValue(valuename)来检索值,前提是没有抛出异常。

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

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

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

希望这可以帮助。

于 2012-09-19T14:50:36.980 回答