Logo_Access_global_380x114Favicon_Access_global_180x180Logo_Access_global_380x114Logo_Access_global_380x114
  • Home
  • University
    • Destellos formativos
  • Labs
  • TV
  • Secciones
    • El mundo de Access
    • Explorando VBA
      • Artículos sobre VBA
      • Un trocito de código
    • Entrevistas
      • Profesionales de Access
    • El rincón de Excel
    • Bases de datos
      • MS SQL
      • MySQL
      • postgreSQL
      • SQLite
    • Clases magistrales
    • Utilidades hechas con Access
  • Access en el mundo
  • ¿Quiénes somos?
  • Cómo colaborar
  • Eventos
✕
            No hay resultados Mostrar todos los resultados
            vba: complementos de Access
            22/02/2023
            VBA: ByVal vs. ByRef
            24/02/2023
            Mostrar todos

            VBIDE otros ejemplos: tipos de módulo según contenido

            Publicado por Alba Salvá
            Categorías
            • Destellos formativos
            Etiquetas
            • CountOfLines
            • CStr
            • Left
            • Len
            • Trim
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vbide-otros-ejemplos-tipos-de-modulo-segun-contenido/
            '                     Destello formativo 272
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : AnexoModulos
            ' Autor original    : Alba Salvá
            ' Creado            : 22/02/2023
            ' Adaptado por      : Luis Viadel | https://cowtechnologies.net
            ' Propósito         : Se trata de un par de funciones para inverstigar el contenido de los módulos
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' 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}
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            
            
            'Colocar el siguiente código en el load de un formulario que contiene un listbox (lstMods)
            Private Sub Form_Load()
            Dim arrMods As Variant
            Dim varMod As Variant
            Dim objMod As VBIDE.VBComponent
                
                Me.lstMods.RowSource = ""
                Me.lstMods.Requery
                
                arrMods = Array("Modulo_Vacio", "Modulo_Cabecera", "Modulo_Procedimiento")
                
                For Each varMod In arrMods
                    Set objMod = Application.VBE.ActiveVBProject.VBComponents(CStr(varMod))
                    If ModuloVacio(objMod) Then
                        Me.lstMods.AddItem "El módulo '" & CStr(varMod) & "' está vacío"
                    Else
                        If TieneProcedimientos(objMod) Then
                            Me.lstMods.AddItem "El módulo '" & CStr(varMod) & "' tiene procedimientos"
                        Else
                            Me.lstMods.AddItem "El módulo '" & CStr(varMod) & "' sólo tiene cabecera"
                        End If
                    End If
                Next
                
                Set objMod = Nothing
            
            End Sub
            
            'Copia y pega este código en un módulo estándar
            Option Compare Database
            Option Explicit
            
            Public Function ModuloVacio(vbc As VBIDE.VBComponent) As Boolean
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vbide-otros-ejemplos-tipos-de-modulo-segun-contenido/
            '                     Destello formativo 272
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : ModuloVacio
            ' Autor original    : Alba Salvá
            ' Creado            : 22/02/2023
            ' Adaptado por      : Luis Viadel | https://cowtechnologies.net
            ' Propósito         : comprueba si el módulo está vacío, sólo se considera 
            '                    vacío si no tiene líneas o se trata de las declaraciones
            '                    Option y líneas comentadas
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' 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}
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            Dim lngLine As Long
            Dim strLine As String
             
                ModuloVacio = False
             
                If vbc.CodeModule.CountOfLines = vbc.CodeModule.CountOfDeclarationLines Then ' Compruebo que tiene líneas
                    For lngLine = 1 To vbc.CodeModule.CountOfLines
                        strLine = Trim(vbc.CodeModule.Lines(lngLine, 1))
                        If Len(strLine) > 0 Then                        ' Verifico si la línea tiene caracteres
                            If Left(strLine, 6) <> "Option" Then        ' Descarto las líneas de "Option..."
                                If Left(strLine, 1) <> "'" Then         ' Descarto las líneas de comentario con comilla simple
                                    If Left(strLine, 3) <> "Rem" Then   ' Descarto las líneas de comentario con "REM"
                                        Exit Function                   ' Salgo con falso
                                    End If
                                End If
                            End If
                        End If
                    Next
                    ModuloVacio = True                             'Indico que está vacío
                End If
             
            End Function
            
            Public Function TieneProcedimientos(vbc As VBIDE.VBComponent) As Boolean
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vbide-otros-ejemplos-tipos-de-modulo-segun-contenido/
            '                     Destello formativo 272
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : TieneProcedimientos
            ' Autor original    : Alba Salvá
            ' Creado            : 22/02/2023
            ' Adaptado por      : Luis Viadel | https://cowtechnologies.net
            ' Propósito         : comprueba si el módulo está tiene algún procedimiento
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' 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}
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            
                With vbc.CodeModule
                    TieneProcedimientos = Not (.CountOfDeclarationLines = .CountOfLines)
                End With
             
            End Function
            
            
            ¡Ver en el repositorio!
            Compartir
            57
            Alba Salvá
            Alba Salvá

            Entradas relacionadas

            30/03/2023

            Tratamiento de errores: compilación condicional


            Leer más
            29/03/2023

            Tratamiento de errores: errores personalizados


            Leer más
            28/03/2023

            Tratamiento de errores: Resume


            Leer más

            Deja una respuesta Cancelar la respuesta

            Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

            ETIQUETAS

            Access API BD Botones ComboBox Consultas CountOfLines CStr Diseño DoCmd Excel Exportar Fecha FileSystemObject Filtros For Each...Next Formulario Formularios Funciones Funciones de dominio GetFolder GetWindowRect Google maps Informes InStr Kill Left Listbox Mid Módulos Node ProcCountLines Procedimientos ProcOfLine References Replace Ribbon RunCommand Seguridad Split SysCmd Tablas TreeView VBA VBIDE

            ÚLTIMAS ENTRADAS

            • 0
              Tratamiento de errores: compilación condicional
              30/03/2023
            • 0
              Tratamiento de errores: errores personalizados
              29/03/2023

            ¿QUIERES PUBLICITAR TU EMPRESA AQUÍ?

            SUSCRÍBETE A NUESTRO
            NEWSLETTER

            Recibirás información puntual sobre el mundo de Access y VBA

            ¡Próximamente!

            Promovemos el uso de Access y de la programación en VBA en todo el mundo

            Centro de conocimiento


            Toda la sabiduría de los mejores programadores de Access y VBA a tu alcance.

            Legal

            Política de privacidad

            Condiciones de uso

            Condiciones del redactor

            ®Access Global 2021 | All right reserved
                      No hay resultados Mostrar todos los resultados