MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Como Deletar Procedimentos/Funções de Módulos em VBA do Access

    Compartilhe
    avatar
    MS Kid
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 22/01/2013

    Como Deletar Procedimentos/Funções de Módulos em VBA do Access

    Mensagem  MS Kid em 28/9/2016, 15:32

    bom dia, pessoal.

    eu sei que posso inserir código VBA em eventos do form usando as propriedades do tipo, OnOpen, por exemplo. o que eu quero saber é como selecionar esses códigos já inseridos no módulo do form (ou geral) e manipulá-los, inserindo mais código ou mesmo deletando-o. estou fazendo uns testes com as coleções VBComponents, VBProjects, etc... mas, sem sucesso.

    alguém aí já fez isso? quem souber de algo, por favor, me ajude.

    obrigado!


    Última edição por MS Kid em 28/9/2016, 15:35, editado 1 vez(es) (Razão : título errado)
    avatar
    MS Kid
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 22/01/2013

    Re: Como Deletar Procedimentos/Funções de Módulos em VBA do Access

    Mensagem  MS Kid em 2/10/2016, 22:35

    eu consegui o que queria fazendo alguns testes e pesquisas na internet e queria compartilhar minha experiência aqui no fórum:

    Código:
    Public Sub ListarCodigoProcedimento()
        Dim componente As Object
        Dim nome As String
        Dim kind As Long
        Dim indice As Long
        Dim linha As Long
        
        Dim inicio As Long
        Dim comprimento As Long
        
        For Each componente In Application.VBE.ActiveVBProject.VBComponents
            With componente.CodeModule
                indice = .CountOfDeclarationLines + 1
                
                Do While indice < .CountOfLines
                    nome = .ProcOfLine(indice, kind)
                    
                    If (componente.Name = "Form_frmTeste") And (nome = "btnTeste1_Click") Then
                        inicio = .ProcStartLine(nome, kind)
                        comprimento = inicio + .ProcCountLines(nome, kind)
                        
                        For linha = inicio To comprimento
                            Debug.Print .Lines(linha, 1)
                        Next linha
                    End If
                    
                    indice = .ProcStartLine(nome, kind) + .ProcCountLines(nome, kind) + 1
                Loop
            End With
        Next componente
    End Sub

    Código:
    Public Sub ListarCodigo()
        Dim componente As Object
        Dim indice As Long
        
        For Each componente In Application.VBE.ActiveVBProject.VBComponents
            With componente.CodeModule
                For indice = .CountOfDeclarationLines + 1 To .CountOfLines
                    Debug.Print .Lines(indice, 1)
                Next indice
            End With
        Next componente
    End Sub

    Código:
    Public Sub ListarProcedimento()
        Dim componente As Object
        Dim nome As String
        Dim kind As Long
        Dim indice As Long
        
        For Each componente In Application.VBE.ActiveVBProject.VBComponents
            With componente.CodeModule
                indice = .CountOfDeclarationLines + 1
                
                Do While indice < .CountOfLines
                    nome = .ProcOfLine(indice, kind)
                    
                    If (componente.Name = "Form_frmTeste") And (nome = "btnTeste1_Click") Then
                        Debug.Print componente.Name & "." & nome
                    End If
                    
                    indice = .ProcStartLine(nome, kind) + .ProcCountLines(nome, kind) + 1
                Loop
            End With
        Next componente
    End Sub

    sds,


    Última edição por MS Kid em 2/10/2016, 22:37, editado 1 vez(es) (Razão : correção de código)

      Data/hora atual: 16/8/2018, 16:34