首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义任务窗格:如何从Addin拦截Excel工作表的可见性更改?

自定义任务窗格:如何从Addin拦截Excel工作表的可见性更改?
EN

Stack Overflow用户
提问于 2020-04-08 19:26:16
回答 1查看 63关注 0票数 1

使用工作表填充的DataGridView &其可见性状态:

我为我的Excel加载项设置了一个自定义任务窗格,其中包含了从打开的DataGridView中填充的WorkBook:

  1. ,它的内容都是打开的工作簿的工作表。根据工作表可见性状态(visible/hidden/SuperHidden).

  • 行是可见的还是不可见的

截取工作表可见性从Addin更改?

我有一些操作/任务发生在Excel工作簿中,用户所做的这些操作/任务可以根据s/他在做什么来显示/隐藏工作表。所以,

  • ,我需要拦截某个工作簿事件吗?(如果这是建议的解决方案,请举一个例子)
  • ,在运行任务之后,是否需要调用Addin的子程序/函数?(如果这也是您的建议,我将非常感激)
  • ,但是,我不喜欢使用线程,因为不是每次都隐藏/显示床单,而只是在某些情况下(用户操作)。只有到那时,我才需要DataGridView可见工作表列表来更新.

我们非常感谢你对此提出的意见/建议。请随时通知我,如果您需要进一步的信息,我将很高兴更新这篇文章或回复您的意见。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-13 17:06:39

最好是直接从Excel中调用外接程序:

代码语言:javascript
复制
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中,使用以下Sub:

代码语言:javascript
复制
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

这样可以解决您的问题,并避免您拼命地搜索现有的隐藏/取消隐藏事件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61108484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档