【问题标题】:C# show hide Excel windowC# 显示隐藏 Excel 窗口
【发布时间】:2011-11-18 16:56:22
【问题描述】:

我正在为 Excel 开发 C# 插件(使用 VSTO 工具)。我有一个异步进程正在运行,它不时弹出通知气泡,显示在靠近任务栏的所有窗口上方。

我可以将一个事件绑定到点击这些弹出的气泡。如果用户单击时隐藏了 Excel 插件,我想显示 Excel 窗口并导航到某个工作表。

这可能吗?

【问题讨论】:

    标签: c# excel


    【解决方案1】:

    您可以通过以下代码找到正在运行的 Excel 实例:

    oExcelApp =  (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
    

    (有关此线程的更多信息:Get instance of Excel application with C# by Handle

    您可能需要检查 Excel 是否对用户可见:

    oExcelApp .Visible = true;
    

    还有这个sn-p来激活你想要的工作表:

    oExcelApp.Worksheet sheet = (oExcelApp.Worksheet)this.Sheets["Sheet2"];
    sheet.Select(Type.Missing);
    

    【讨论】:

    • 非常感谢。但是,我的用户很可能会打开几个 Excel。有没有办法只显示有关的excel?在我的应用程序中,我在 .xls 文件下有一个 ThisWorkBook.cs 类。我可以以某种方式存储对此的引用,以便稍后在需要时显示它吗?
    • @jerome G:定义“相关 excel” - 您将如何确定哪个 Excel 流程是正确的?尤其是当他们都加载了你的插件时?
    • 另请参阅此线程:stackoverflow.com/questions/158706/… 以了解如何清理您的对象以及有关如何选择工作表的一些提示。顺便说一句,你确定你会打开几个 instances 的 Excel 吗?还是几个工作表?
    • 我所说的有关 Excel 实例的意思是气泡是从添加项目中抛出的。所以我想我想在抛出它时选择包含add实例的Excel实例,然后获取工作表,然后获取我想要的工作表。
    • 好吧,我不得不假设用户可以拥有多个 Excel 实例。当然,他们都已经加载了插件,但并非所有人都在扔泡泡。我可以绑定一个点击事件来回调插件本身的事实应该有助于实现我的目标吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多