Option Compare Database Option Explicit Public Enum EnuTipos vbext_pk_Proc = 0 vbext_pk_Let = 1 vbext_pk_Set = 2 vbext_pk_Get = 3 End Enum #If False Then Dim vbext_pk_Proc, vbext_pk_Let, vbext_pk_Set, vbext_pk_Get #End If Public Sub ListadoProcedimientos(frm As Form) '----------------------------------------------------------------------------------------------------------------------------------------------- ' Fuente : https://access-global.net/vbide-series-procedimientos-listar-procedimientos/ ' Destello formativo 264 '----------------------------------------------------------------------------------------------------------------------------------------------- ' Título : ListadoProcedimientos ' Autor original : Alba Salvá ' Creado : desconocido ' Adaptado por : Luis Viadel ' Propósito : mostrar un listado con todos los procedimientos de nuestro programa '----------------------------------------------------------------------------------------------------------------------------------------------- ' Referencias : Microsoft Visual Basic for Applications Extensibility 5.3 ' C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB ' {0002E157-0000-0000-C000-000000000046} '----------------------------------------------------------------------------------------------------------------------------------------------- ' Información : https://learn.microsoft.com/en-us/office/vba/language/glossary/vbe-glossary#code-pane ' https://learn.microsoft.com/en-us/office/vba/api/access.module '----------------------------------------------------------------------------------------------------------------------------------------------- ' Test: : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copia el bloque siguiente al ' portapapeles y pega en el editor de VBA en la carga de un formulario. ' Descomenta la línea que te interese y pulsa F5 para ver su funcionamiento. ' 'Private Sub Form_Load() ' ' ListadoProcedimientos Me ' 'End Sub ' '--------------------------------------------------------------------------------------------------------------------------------------------------- Dim vbc As VBIDE.VBComponent Dim lngStartLine As Long Dim lngProcTyp As Long frm.lstProc.RowSource = "" For Each vbc In Application.VBE.ActiveVBProject.VBComponents frm.lstProc.AddItem vbc.Name With vbc.CodeModule 'Propiedades de CodeModule ' Debug.Print "Módulo: " & .CodePane.CodeModule ' Debug.Print "Nº de líneas en las declaraciones: " & .CountOfDeclarationLines ' Debug.Print "Nº de líneas en el módulo: " & .CountOfLines ' Debug.Print "Contenido de la línea nº 21: " & .Lines(21, 1) ' Debug.Print "Objeto principal: " & .Parent.Name ' Debug.Print "El cuerpo del procedimiento '" & .ProcOfLine(13, vbext_pk_Proc) & "' comienza en la línea " & .ProcBodyLine("lstProc_DblClick", vbext_pk_Proc) ' Debug.Print "El procedimiento '" & .ProcOfLine(13, vbext_pk_Proc) & "' contiene "; .ProcCountLines("lstProc_DblClick", vbext_pk_Proc) & " líneas" ' Debug.Print "El procedimiento que contiene la línea 6 es " & .ProcOfLine(6, vbext_pk_Proc) ' Debug.Print "El procedimiento lstProc_DblClick comienza en la línea " & .ProcStartLine("lstProc_DblClick", vbext_pk_Proc) ' lngStartLine = .CountOfDeclarationLines + 1 Do Until lngStartLine >= .CountOfLines 'Obtenemos el nombre del procedimiento con ProcOfLine a través del número de línea frm.lstProc.AddItem String(8, "-") & " " & .ProcOfLine(lngStartLine, lngProcTyp) & _ " (" & Choose(lngProcTyp + 1, "Procedimiento / Evento", "Let", "Set", "Get") & ")" lngStartLine = lngStartLine + .ProcCountLines(.ProcOfLine(lngStartLine, lngProcTyp), lngProcTyp) Loop End With Next End Sub Public Sub ListadoProcedimientosForm() '----------------------------------------------------------------------------------------------------------------------------------------------- ' Fuente : https://access-global.net/vbide-series-procedimientos-listar-procedimientos/ ' Destello formativo 264 '----------------------------------------------------------------------------------------------------------------------------------------------- ' Título : ListadoProcedimientosForm ' Creado : Luis Viadel ' Propósito : mostrar un listado todos los procedimientos de nuestro programa en un UserForm de Acccess '----------------------------------------------------------------------------------------------------------------------------------------------- ' Test: : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copia el bloque siguiente al ' portapapeles y pega en el editor de VBA en la carga de un formulario. ' Descomenta la línea que te interese y pulsa F5 para ver su funcionamiento. ' 'Private UserForm_Initialize() ' ' ListadoProcedimientosForm ' 'End Sub ' '--------------------------------------------------------------------------------------------------------------------------------------------------- Dim vbc As VBIDE.VBComponent Dim lngStartLine As Long Dim lngProcTyp As Long For Each vbc In Application.VBE.ActiveVBProject.VBComponents If vbc.Name <> "procUserForm" Then procUserForm.lstProc.AddItem vbc.Name With vbc.CodeModule lngStartLine = .CountOfDeclarationLines + 1 Do Until lngStartLine >= .CountOfLines procUserForm.lstProc.AddItem String(8, "-") & " " & .ProcOfLine(lngStartLine, lngProcTyp) & _ " (" & Choose(lngProcTyp + 1, "Procedimiento / Evento", "Let", "Set", "Get") & ")" lngStartLine = lngStartLine + .ProcCountLines(.ProcOfLine(lngStartLine, lngProcTyp), lngProcTyp) Loop End With End If Next End Sub