自定义任务窗格:如何从插件拦截 Excel 工作表的可见性变化?

Custom Task Pane: How can I intercept Excel worksheets' visibility change from the Addin?

填充有工作表的 DataGridView 及其可见性状态:

我的 Excel 插件有一个自定义任务窗格,其中包含我从打开的工作簿中填充的 DataGridView:

  1. 其内容为打开的Workbook的所有Sheets。
  2. 行是否可见取决于工作表可见性状态 (visible/hidden/SuperHidden)。

拦截工作表可见性从插件更改?

我在 Excel 工作簿中发生了 operations/tasks,用户可以根据 s/he 所做的事情 show/hide 工作表。所以,

非常感谢您对此的 suggestions/recommendations。如果您需要更多信息,请随时告诉我,我很乐意更新此 post 或在评论中回复您。

您最好直接从您的 Excel:

调用加载项 void
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;

namespace YourSolution
{
    [ComVisible(true)]
    public interface IAddInUtilities
    {
        //You have to implement this
        void YourFunctionToCall();
    }

    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    public class AddInUtilities : IAddInUtilities
    {
        //Implemntation: Call this from your Excel
        public void YourFunctionToCall()
        {
             //The Operation here ...
        }
    }
}

然后从你的 Excel VBA,使用这个 Sub:

Public Sub FunctionCallableInVBA()
    Dim addIn As COMAddIn
    Dim automationObject As Object
    Set addIn = Application.COMAddIns("YourSolution")
    Set automationObject = addIn.Object

    'Call the Function your shared on the COM
    automationObject.YourFunctionToCall()

    Set addIn = Nothing
    Set automationObject = Nothing
End Sub

这应该可以解决您的问题,避免您拼命搜索那个不存在的 hide/unhide 事件。