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
            VBIDE: ¿esta línea es un comentario?
            05/04/2023
            VBA: ¿está abierto el formulario?
            11/04/2023
            Mostrar todos

            VBIDE: Obtener código concreto

            Publicado por Alba Salvá
            Categorías
            • Destellos formativos
            Etiquetas
            • Lines
            • ProcBodyLine
            • ProcCountLines
            • ProcStartLine
            • VBIDE
            Public Function ObtenerCode(ByVal sModuleName As String, ByVal sProcName As String, Optional bInclCabecera As Boolean = True) As String
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/vbide-obtener-código-concreto
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : ObtenerCode
            ' Autor original    : Alba Salvá
            ' Creado            : marzo 2023
            ' Propósito         : Obtener todo el código de un procedimiento
            ' Retorno           : cadena con el código obtenido
            ' Argumento/s       : La sintaxis del procedimiento o función consta de los siguientes argumentos:
            '                     Parte                      Modo                    Descripción
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            '                     sModuleName               Obligatorio          Nombre del módulo que contiene el procedimiento a buscar
            '                     sProcName                 Obligatorio          Nombre del procedimiento a extraer el textor
            '                     bInclCabecera             Obligatorio          True/False - Indica si se incluye la cabecera del procedimiento en la
            '                                                                    salida del texto
            ' Referencias       : Microsoft Visual Basic for Applications Extensibility 5.3
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Test:             : Para adaptar este código en tu aplicación puedes basarte en este test. Copia el bloque siguiente al
            '                     portapapeles y pégalo en el editor de VBA en el evento de tu elección.
            '                     Descomenta las líneas y pulsa F5 para ver su funcionamiento.
            '
            ' ? ObtenerCode("Module1", "fOSUserName")
            ' ? ObtenerCode("Module1", "fOSUserName", False)
            '---------------------------------------------------------------------------------------------------------------------------------------------------
            Dim oModule               As Object  'CodeModule
            Dim lProcStart            As Long
            Dim lProcBodyStart        As Long
            Dim lProcNoLines          As Long
                
                'Const vbext_pk_Proc = 0 'Requerido en caso de usar Late Binding
             
             
                On Error GoTo lbError
             
                Set oModule = Application.VBE.ActiveVBProject.VBComponents(sModuleName).CodeModule ' Establecemos el objeto módulo y su código
                    lProcStart = oModule.ProcStartLine(sProcName, vbext_pk_Proc) ' Obtenemos el principio del procedimiento
                    lProcBodyStart = oModule.ProcBodyLine(sProcName, vbext_pk_Proc) ' Obtenemos el principio del cuerpo del procedimiento
                    lProcNoLines = oModule.ProcCountLines(sProcName, vbext_pk_Proc) ' Obtenemos la longitud del procedimiento
                    If bInclCabecera = True Then                                    ' Si se incluye la cabecera, tomamos todo el procedimiento
                        ObtenerCode = oModule.Lines(lProcStart, lProcNoLines)
                    Else                                                            ' en caso contrario, sólo el cuerpo
                        lProcNoLines = lProcNoLines - (lProcBodyStart - lProcStart)
                        ObtenerCode = oModule.Lines(lProcBodyStart, lProcNoLines)
                    End If
             
                GoTo lbFinally
             
            lbError:
                'Se produce el error 35 si el procedimiento no se encuentra
                MsgBox "Ha ocurrido un error" & vbCrLf & vbCrLf & _
                       "Código de Error : " & Err.Number & vbCrLf & _
                       "Origen del Error : ObtenerCode" & vbCrLf & _
                       "Descripción Error : " & Err.Description & _
                       Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Línea No: " & Erl) _
                       , vbOKOnly + vbCritical, "¡Ha ocurrido un error"
            
            lbFinally:
                On Error Resume Next
                If Not oModule Is Nothing Then Set oModule = Nothing
            
            End Function
            
            
            ¡Ver en el repositorio!
            Compartir
            63
            Alba Salvá
            Alba Salvá

            Entradas relacionadas

            31/05/2023

            VBA: crea códigos QR sin conexión a Internet


            Leer más
            30/05/2023

            VBA: imprimir sin informes


            Leer más
            29/05/2023

            VBA: método BrowseTo


            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 ComboBox Consultas CountOfDeclarationLines CountOfLines CStr DCount Diseño DoCmd Excel Fecha FileExists FileSystemObject Filtros For Each...Next Formulario Formularios Funciones Funciones de dominio GetFolder Google maps Informes InStr Kill Listbox Mid Mod Módulos Node ProcCountLines Procedimientos ProcOfLine References Replace Ribbon RunCommand Split Tablas TreeView VBA VBE VBIDE With...End With WizHook

            ÚLTIMAS ENTRADAS

            • 0
              VBA: crea códigos QR sin conexión a Internet
              31/05/2023
            • 0
              VBA: imprimir sin informes
              30/05/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