Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador módulo. Mostrar todas as postagens
Mostrando postagens com marcador módulo. Mostrar todas as postagens

VBA Excel - Deletando todas as procedures da planilha - Delete all macros in a workbook









Simplemente passe o rodo na sua planilha!

Antes de continuar, um pequeno parênteses, deixe seus comentários para este post. 

Sub DeleteProcedureCode (ByVal wb As Workbook, _
                                            ByVal DeleteFromModuleName As String, 
                                            ByVal ProcedureName As String)

' deletes ProcedureName from DeleteFromModuleName in wb
Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long

    On Error Resume Next

    Set VBCM = wb.VBProject.VBComponents(DeleteFromModuleName).CodeModule

    If Not VBCM Is Nothing Then
        ' determine if the procedure exist in the codemodule
        Let ProcStartLine = 0
        Let ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc)

        If ProcStartLine > 0 Then ' prosedyren finnes, slett den
            Let ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc)
            VBCM.DeleteLines ProcStartLine, ProcLineCount
        End If

        Set VBCM = Nothing
    End If

    On Error GoTo 0
End Sub



Reference:

Tags:  VBA, Excel, content, module, módulo, Class Modules in VBA, delete, del, excluir, apagar, procedure, function  


VBA Excel - Deletando uma procedure de um módulo - Delete a procedure from a module

Esse código permite que você apague somente uma procedure dentro de um módulo. Alteração cirúrgica!

Antes de continuar, um pequeno parênteses, deixe seus comentários para este post. 

DeleteProcedureCode Workbooks ("wb_Bernardes.xlsb"), "mdl_Functions", "ExtractData"

Sub DeleteProcedureCode (ByVal wb As Workbook, _
                                           ByVal DeleteFromModuleName As String, _
                                           ByVal ProcedureName As String)

' deletes ProcedureName from DeleteFromModuleName in wb
Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long

On Error Resume Next

    Set VBCM = wb.VBProject.VBComponents(DeleteFromModuleName).CodeModule

    If Not VBCM Is Nothing Then
        ' determine if the procedure exist in the codemodule
        Let ProcStartLine = 0
        Let ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc)

        If ProcStartLine > 0 Then ' prosedyren finnes, slett den
            Let ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc)

            VBCM.DeleteLines ProcStartLine, ProcLineCount
        End If

        Set VBCM = Nothing
    End If

    On Error GoTo 0
End Sub

Reference:

Tags: VBA, Excel, content, module, módulo, Class Modules in VBA, delete, del, excluir, apagar, procedure, function 


VBA excel - Deletando um módulo - Delete a module using VBA in Microsoft Excel







Esse código aparentemente não tem uma grande importância, mas se souber usá-lo, poderá torná-lo parte da sua coletânea de artifícios para proteger seus projetos e aplicações.

Antes de continuar, um pequeno parênteses, deixe seus comentários para este post. 

Ao apagar um módulo, todas as funcionalidade da planilha dependentes desse módulo ficam automaticamente inativas. Que dica hein! 

Segue o código: DelVBComponent ActiveWorkbook, "mdl_MainFunctions"

Sub DelVBComponent (ByVal wb As Workbook, ByVal CompName As String)
' deletes the vbcomponent named CompName from wb

    Let Application.DisplayAlerts = False

    On Error Resume Next ' ignores any errors

    wb.VBProject.VBComponents.Remove wb.VBProject.VBComponents (CompName) 

    ' delete the component
    On Error GoTo 0

    Let Application.DisplayAlerts = True
End Sub



Reference:

Tags:  VBA, Excel, content, module, módulo, Class Modules in VBA, delete, del, excluir, apagar,     



VBA Excel - Copiando o módulo entre os workbooks - Copy modules from one workbook to another

Inline image 1

Em algumas planilhas, em especial aquelas onde temos uns 4 ou 5 Dashboards, existem funções de navegação e mesmo layouts que são adaptáveis ao seu respectivo conteúdo (contexto). Em muitas delas o comportamento é similar, mas não exatamente igual. Podemos até tornar as funcionalidades customizáveis de acordo com a opção escolhida para análise. Com essa técnica podemos como que estender os 'poderes'  da planilha durante a análise feita nela. Isso é que é polimorfismo! O Mesmo objeto, mas com novas características nos eventos.

Antes de continuar, um pequeno parênteses, deixe seus comentários para este post. 

Bem, introdução à parte, o código abaixo permite que migre todo o conteúdo de um workbook para outro. Siga a sintaxe:CopyModule Workbooks ("Bernardes_Plan01.xlsb"), "mdl_Navigation_Functions", Workbooks ("Bernardes_Plan0.xlsb")

Sub CopyModule (SourceWB As Workbook, strModuleName As String, _
                            TargetWB As Workbook)

    Dim strFolder As String, strTempFile As String

    Let strFolder = SourceWB.Path

    If Len(strFolder) = 0 Then Let strFolder = CurDir

    Let strFolder = strFolder & "\"
    Let strTempFile = strFolder & "~tmpexport.bas"
    
    On Error Resume Next

    SourceWB.VBProject.VBComponents(strModuleName).Export strTempFile
    TargetWB.VBProject.VBComponents.Import strTempFile
    
    Kill strTempFile
    
    On Error GoTo 0
End Sub



Reference:

Tags: VBA, Excel, content, add, module, módulo, copy, copiar, Module, conteúdo, Modules, Class Modules in VBA, kill, export, workbook  


VBA Excel - Adicionando um conteúdo para um módulo a partir de um arquivo - Add content to a module from a file using VBA in Microsoft Excel









Ao efetuar a manutenção de uma aplicação talvez não desejemos importar todo um módulo, mas apenas algumas funcionalidades ou processos deste.

Antes de continuar, um pequeno parênteses, deixe seus comentários para este post. 

Selecionamos então as funcionalidades que desejamos e as colamos em um arquivo texto externo. Com o código abaixo somos capazes de importar o arquivo externo, inserindo o código dele no módulos que selecionarmos: ImportModuleCode ActiveWorkbook, "mdl_ExternalCode", "C:\Bernardes\nCodes.txt"


Sub ImportModuleCode (ByVal wb As Workbook, _
                                       ByVal ModuleName As String, _
                                       ByVal ImportFromFile As String)

' imports code to ModuleName in wb from a textfile named ImportFromFile
Dim VBCM As CodeModule

    If Dir(ImportFromFile) = "" Then Exit Sub
    On Error Resume Next

    Set VBCM = wb.VBProject.VBComponents(ModuleName).CodeModule

    If Not VBCM Is Nothing Then
        VBCM.AddFromFile ImportFromFile
        Set VBCM = Nothing
    End If

    On Error GoTo 0
End Sub


Reference:

Tags:VBA, Excel, content, add, module, módulo, adicionar, Module, conteúdo, Modules, Class Modules in VBA, 

VBA Excel - Adicionando uma Procedure a um módulo - Add a procedure to a module using

Inline image 1

Podemos inserir Funções ou Subs em módulos pré-existentes na nossa planilha. Para isso basta que programemos o seguinte código em qualquer evento da nossa planilha:

Antes de continuar, um pequeno parênteses, deixe seus comentários para este post. 

InsertProcedureCode Workbooks("WorkBookBernardes.xlsb"), "mdl_Functions_AutomaticInserted"

Sub InsertProcedureCode (ByVal wb As Workbook, ByVal InsertToModuleName As String)
Dim VBCM As CodeModule
Dim InsertLineIndex As Long

    On Error Resume Next

    Set VBCM = wb.VBProject.VBComponents(InsertToModuleName).CodeModule

    If Not VBCM Is Nothing Then

        With VBCM
            Let InsertLineIndex = .CountOfLines + 1

            ' customize the next lines depending on the code you want to insert
            .InsertLines InsertLineIndex, "Sub NewSubName()" & Chr(13)
           
             Let InsertLineIndex = InsertLineIndex + 1
            .InsertLines InsertLineIndex, _
                "    Msgbox ""Olá Mundo!"",vbInformation,"".: Primeira""" & Chr(13)

            Let InsertLineIndex = InsertLineIndex + 1

            .InsertLines InsertLineIndex, "End Sub" & Chr(13)
            ' no need for more customizing
        End With

        Set VBCM = Nothing

    End If

    On Error GoTo 0
End Sub


Reference:
Tags:  VBA, Excel, procedure, add, module, módulo, adicionar, Modules, Class Modules in VBA


VBA Excel - Criando um novo módulo automaticamente - Create a new module

Inline image 1

Inserir um novo módulo de maneira automática numa planilha talvez seja um processo que possa automatizar na estação de trabalho onde começa a desenvolver as suas novas aplicações com o MS Excel. Essa característica, sem dúvida, o ajudaria a tornar o seu ponto de partida mais ágil.

Como?

Bem, use o código abaixo e divirta-se!

CreateNewModule ActiveWorkbook, 1, "TestModule"

Sub CreateNewModule (ByVal wb As Workbook, _
                                      ByVal ModuleTypeIndex As Integer, _
                                      ByVal NewModuleName As String)

' creates a new module of ModuleTypeIndex 
' (1=standard module, 2=userform, 3=class module) in wb
' renames the new module to NewModuleName (if possible)

Dim VBC As VBComponent, mti As Integer
    Set VBC = Nothing
    Let mti = 0

    Select Case ModuleTypeIndex
        Case 1: mti = vbext_ct_StdModule ' standard module
        Case 2: mti = vbext_ct_MSForm ' userform
        Case 3: mti = vbext_ct_ClassModule ' class module
    End Select

    If mti <> 0 Then
        On Error Resume Next

        Set VBC = wb.VBProject.VBComponents.Add(mti)

        If Not VBC Is Nothing Then
            If NewModuleName <> "" Then
                Let VBC.Name = NewModuleName
            End If
        End If

        On Error GoTo 0

        Set VBC = Nothing
    End If
End Sub




Reference:
Tags:  VBA, Excel, content, module, módulo, Class Modules in VBA, create


diHITT - Notícias