Проверьте, используется ли Workbook_Open в книге - PullRequest
0 голосов
/ 11 июля 2019

Я создал специальную надстройку для Excel и хочу проверить, есть ли в какой-либо открытой книге обработанное событие Workbook_Open, уже обработанное в этой книге. Исходя из этого, если он уже обработан, я хочу предложить пользователю некоторые инструкции для выполнения. Ниже приведен фрагмент кода метода, используемого в ThisWorkbookk пользовательской рабочей книги.

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

Я уже проверил объект ThisWorkbook, у него нет свойства или списка событий, которые уже используются.

Есть ли способ или свойство, чтобы определить, используется ли событие Open книги в книге пользователя.

1 Ответ

0 голосов
/ 11 июля 2019

Ниже приведен код, который может проверить, существует ли процедура WorkBook_Open в рабочей книге.

  • Измените имя файла, как оно есть в коде
  • установить ссылку на Microsoft Visual Basic для приложений Расширяемость 5.3 Библиотека

    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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...