首页 > 解决方案 > 检查 Workbook_Open 是否在工作簿中使用

问题描述

我已经构建了一个自定义 excel 加载项,我想检查打开的任何工作簿是否已经在工作簿中处理了 Workbook_Open 事件。基于它,如果已经处理,我想提示用户遵循一些说明。下面是用户工作簿的 ThisWorkbookk 中使用的方法的代码片段。

    Private Sub Workbook_Open()
    'Some code user had already written here
    End Sub

我已经检查了 ThisWorkbook 对象,它没有任何已使用的属性或事件列表。

是否有任何方法或属性来确定用户工作簿中是否使用了工作簿的打开事件。

标签: excelvba

解决方案


下面是可以检查WorkBook_Open程序是否存在于工作簿中的代码。

  • 更改代码中的文件名
  • 设置对Microsoft Visual Basic for Applications Extensibility 5.3 Library的引用

    Sub Check()
    
    Dim pk As vbext_ProcKind
    Dim vbProj As VBIDE.VBProject
    Dim vbComp As VBIDE.VBComponent
    Dim vbMod As VBIDE.CodeModule
    
    Set app = Excel.Application
    
    For Each vbProj In app.VBE.VBProjects
    
        If vbProj.filename = "C:\Users\mohit.bansal\Desktop\Test\Faster.xlsm" Then
    
        For Each vbComp In vbProj.VBComponents
    
            Set vbMod = vbComp.CodeModule
    
                iLine = 1
                Do While iLine < vbMod.CountOfLines
                  sProcName = vbMod.ProcOfLine(iLine, pk)
                  If sProcName <> "" Then
                    'Debug.Print vbComp.Name & ": " & sProcName
    
                    If sProcName = "Workbook_Open" Then MsgBox "WorkBook_Open Exists!!"
    
                    iLine = iLine + vbMod.ProcCountLines(sProcName, pk)
                  Else
                    iLine = iLine + 1
                  End If
                Loop
    
        Next
    
        End If
    
    Next
    
    End Sub
    

礼貌:peltiertech


推荐阅读