VBA: función “Loc”
09/05/2023VBA: función “Eval”
11/05/2023Option Compare Database Option Explicit Public Function AbrirEstadisticas() DoCmd.OpenForm "VBIDEEstadisticas" End Function Public Function VBIDE_Estadisticas() As Variant '--------------------------------------------------------------------------------------------------------------------------------------------------- ' Fuente : https://access-global.net/vbide-algunas-estadisticas/ '--------------------------------------------------------------------------------------------------------------------------------------------------- ' Título : EstadisticasReferencias ' Autor original : Luis Viadel ' Creado : desconocido ' Colaboradores : Alba Salvá ' Propósito : Obtener cirtos valores de propiedades del VBIDE del programa host, ya que se realiza la acción desde un complemento ' Argumento/s : no tiene argumentos ' Devolución : la función devuelve un matriz con todos los valores que queremos calcular '--------------------------------------------------------------------------------------------------------------------------------------------------- ' Referencias : '--------------------------------------------------------------------------------------------------------------------------------------------------- ' Test: : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copia el bloque siguiente código al ' portapapeles y pega en el editor de VBA, en el evento del objeto que desees. En el test lo hacemos desde la carga de un form ' Descomentar la línea que nos interese y pulsar F5 para ver su funcionamiento. ' 'Private Sub Form_Load() 'Dim VBIDEStats As Variant ' ' VBIDEStats = VBIDE_Estadisticas ' 'End Sub ' '--------------------------------------------------------------------------------------------------------------------------------------------------- Dim objRef As VBIDE.Reference Dim objRefs As VBIDE.References Dim RefNum As Integer Dim vbc As VBIDE.VBComponent Dim vbcProjects As VBIDE.VBProjects Dim vbcProject As VBIDE.VBProject Dim NumStats As Variant Dim NumMods As Integer, NumMod1 As Integer, NumMod2 As Integer Dim NumMod3 As Integer, NumMod4 As Integer, NumMod5 As Integer Dim NumProcs As Integer Dim NumLinProcs As Long Dim NumLinProcsCabecera As Long Dim lngLastLine As Long, lngStartLine As Long Dim lngLastLine1 As Long, lngStartLine1 As Long Dim lngPublic As Long, lngPrivate As Long, lngComment As Long Dim lngSub As Long, lngFunction As Long, lngVariables As Long 'Calculamos el número de referencias Set objRefs = Application.VBE.ActiveVBProject.References For Each objRef In objRefs RefNum = RefNum + 1 Next Set objRef = Nothing 'Leyenda para módulos 'NumMod1=Número de módulos estándar 'NumMod2=Número de módulos de clase 'NumMod3=Número de UserForms 'NumMod4=Número de Formularios 'Nummod5=Número de informes 'Inicializamos todas las variables NumMod1 = 0 NumMod2 = 0 NumMod3 = 0 NumMod4 = 0 NumMod5 = 0 'Localizamos el VBProject correcto, porque si no, nos mostrará siempre el del complemento Set vbcProjects = Application.VBE.VBProjects For Each vbcProject In vbcProjects If vbcProject.Name <> "VBIDE_Estadisticas" Then If vbcProject.Name <> "ACWZTOOL" Then 'Recorremos los módulos y vamos revisando sus tipos For Each vbc In vbcProject.VBComponents Debug.Print vbc.Name NumMods = NumMods + 1 Select Case vbc.Type Case 1 NumMod1 = NumMod1 + 1 Case 2 NumMod2 = NumMod2 + 1 Case 3 NumMod3 = NumMod3 + 1 Case 100 If Left(vbc.Name, 4) = "Form" Then NumMod4 = NumMod4 + 1 Else NumMod5 = NumMod5 + 1 End If End Select Next Exit For End If End If Next Set vbcProjects = Nothing 'Repetimos la operación para los procedimientos 'Inicializamos las variables NumLinProcsCabecera = 0 NumLinProcs = 0 NumProcs = 0 lngPublic = 0 lngPrivate = 0 lngComment = 0 lngSub = 0 lngFunction = 0 lngLastLine = 0 lngStartLine = 0 'Recorremos todos los módulos Set vbcProjects = Application.VBE.VBProjects For Each vbcProject In vbcProjects If vbcProject.Name <> "VBIDE_Estadísticas" Then If vbcProject.Name <> "ACWZTOOL" Then For Each vbc In vbcProject.VBComponents With vbc.CodeModule lngStartLine = .CountOfDeclarationLines + 1 lngLastLine = .CountOfLines lngLastLine1 = .CountOfLines lngStartLine1 = .CountOfDeclarationLines + 1 NumLinProcsCabecera = NumLinProcsCabecera + .CountOfDeclarationLines NumLinProcs = NumLinProcs + .CountOfLines - .CountOfDeclarationLines 'Contamos los procedimientos Do Until lngStartLine >= .CountOfLines lngStartLine = lngStartLine + .ProcCountLines(.ProcOfLine(lngStartLine, vbext_pk_Proc), vbext_pk_Proc) NumProcs = NumProcs + 1 Loop 'Buscamos concepto a concepto For lngStartLine = lngStartLine1 To lngLastLine1 If vbc.CodeModule.Find("Public Sub", lngStartLine, 1, lngStartLine, 10) = True Then lngSub = lngSub + 1 End If Next For lngStartLine = lngStartLine1 To lngLastLine1 If vbc.CodeModule.Find("Private Sub", lngStartLine, 1, lngStartLine, 11) = True Then lngSub = lngSub + 1 End If Next For lngStartLine = lngStartLine1 To lngLastLine1 If vbc.CodeModule.Find("Public Function", lngStartLine, 1, lngStartLine, 15) = True Then lngFunction = lngFunction + 1 End If Next For lngStartLine = lngStartLine1 To lngLastLine1 If vbc.CodeModule.Find("Private Function", lngStartLine, 1, lngStartLine, 16) = True Then lngFunction = lngFunction + 1 End If Next 'Recorremos las líneas de código para localizar los comentarios For lngStartLine = lngStartLine1 To lngLastLine1 If vbc.CodeModule.Find("'", lngStartLine, 1, lngStartLine, 10) = True Then lngComment = lngComment + 1 Next End With Exit For Next End If End If Next Set vbcProjects = Nothing VBIDE_Estadisticas = Array(RefNum, NumMods, NumMod1, NumMod2, NumMod3, NumMod4, NumMod5, NumLinProcsCabecera, NumLinProcs, NumProcs, lngComment, lngSub, lngFunction) End Function
Destello 321 - Estadísticas de mi aplicación
1 archivo(s) 448.20 KB