gpt4 book ai didi

excel - 打开文件时在excel插件(xlam)中执行操作

转载 作者:行者123 更新时间:2023-12-04 21:50:28 26 4
gpt4 key购买 nike

我正在构建一个插件来处理一个非常烦人的外部提供的文件。打开该文件时,它会做很多烦人的事情,将功能区隐藏在其中。我想阻止这种行为。是的,可以通过其他方式做到这一点,但我希望将其集成到插件中 - 与工作表交互的用户非常简单 - 打开文件时按 shift 之类的东西太复杂了,我们也想要文件中的其他宏才能正常运行。

所以,问题:

  • xlam插件是否可以知道文件何时打开,然后执行一些功能
  • 从打开 Excel 开始,xlam 插件是否可以每 10 秒执行一次功能? (不太漂亮的解决方案)
  • 最佳答案

    有可能是的。您可以执行以下操作:

    在一个名为 AppEvents 的新类模块中放置以下代码:

    Option Explicit
    Public WithEvents App As Application

    Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    MsgBox "Hello new workbook!"
    'do whatever else you'd rather do here
    End Sub

    Private Sub Class_Terminate()
    Set App = Nothing
    End Sub

    如果您想检测新工作簿以及打开已经创建的工作簿,那么您也需要添加以下内容:
    Private Sub App_NewWorkbook(ByVal Wb As Workbook)
    MsgBox "Hello new workbook!"
    'do whatever else you'd rather do here
    End Sub

    然后在一个模块中,我们需要创建一个模块级变量来保存事件处理程序,并创建一个可以设置这个模块变量的函数:
    Option Explicit

    Dim EventHandler As AppEvents

    Sub InitHandler()
    Set EventHandler = New AppEvents
    Set EventHandler.App = Application
    End Sub

    最后,我们需要在 thisworkbook 中添加一个函数。 XLAM 插件部分:
    Private Sub Workbook_Open()
    Call InitHandler
    End Sub

    解释

    其工作方式是,当在 Excel 中打开工作簿时,只要 XLAM 插件也打开,workbook_open 例程就会被调用。这将初始化公共(public)模块中的事件处理程序,并在此过程中捕获应用程序调用。

    我们拥有类的唯一原因是我们需要将具有事件的变量放在类模块中。

    我用了 this short article关于捕获开幕事件来写这个。希望这可以帮助。

    关于excel - 打开文件时在excel插件(xlam)中执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55395187/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com