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 procedure. Mostrar todas as postagens
Mostrando postagens com marcador procedure. Mostrar todas as postagens

VBA Access - Usando built-in enumerations nas suas procedures - Using built-in enumerations in your procedures


Às vezes temos tarefas recorrente que gostaríamos de simplificar e quando essas tarefas envolvem interações com o modelo de objetos do MS Access, nós certamente não queremos perder o recurso de intellisense embutido neste.

Você tem algum intellisense?

Freqüentemente abrimos os nossos formulários usando uma cláusula WHERE, e para nos certificarmos de abrí-los corretamente, sempre o fechamos antes de abrí-lo novamente.

Criamos um procedimento simples chamado OpenMyForm usando uma seqüência regular para a condição onde.


Public Sub OpenMyForm(FormName As String, WhereCondition As String)
  If CurrentProject.AllForms(FormName).IsLoaded Then
    DoCmd.Close acForm, FormName
  End If

  DoCmd.OpenForm FormName, WhereCondition:=WhereCondition
End Sub


Este código funcionou bem, mas suponha que deseje abrir o formulário de abertura no modo visualizar ou folha de dados. Poderíamos fazer isso adicionando um outro parâmetro:


Public Sub OpenMyForm( _
  FormName As String, _
  WhereCondition As String, _
  OpenAsDatasheet As Boolean)

  If CurrentProject.AllForms(FormName).IsLoaded Then
    DoCmd.Close acForm, FormName
  End If

  If OpenAsDatasheet Then
    DoCmd.OpenForm FormName, _
                   WhereCondition:=WhereCondition, _
                   View:=acFormDS
  Else
    DoCmd.OpenForm FormName, _
                   WhereCondition:=WhereCondition, _
                   View:=acNormal
  End If
End Sub


Não queremos continuar adicionando mais linhas de código, então modificamos o OpenMyForm para usar o modo nativo do Access AcFormView, AcFormOpenDataMode e AcWindowMode:


Public Sub OpenMyForm ( _
  FormName As Variant, _
  Optional View As AcFormView = acNormal, _
  Optional FilterName As Variant, _
  Optional WhereCondition As Variant, _
  Optional DataMode As AcFormOpenDataMode = acFormPropertySettings, _
  Optional WindowMode As AcWindowMode = acWindowNormal, _
  Optional OpenArgs As Variant)
  If CurrentProject.AllForms(FormName).
IsLoaded Then
    DoCmd.Close acForm, FormName
  End If
  DoCmd.OpenForm FormName, _
                 View, _
                 FilterName, _
                 WhereCondition, _
                 DataMode, _
                 WindowMode, _
                 OpenArgs
End Sub

Se você usar o navegador de objeto (F2) e olhar para cima DoCmd.OpenForm, notará que os parâmetros são exatamente iguais. Quando adicionar uma nova linha OpenMyForm, ainda receberá a mesma ajuda intellisense que teve com DoCmd.OpenForm originais.

Como os parâmetros são definidos usando os mesmos tipos de dados (perceba que as enumerações são uma forma de tipo de dados), nomeando os mesmos nomes, e têm os mesmos padrões, todas as variantes possíveis de DoCmd.OpenForm, omitem argumentos, use vírgulas para pular alguns argumentos opcionais, trabalhando com o novo OpenMyForm sem quaisquer alterações, além do fato de que nós temos a garantia de que a filtragem será a atual.

Para descobrir quais enumerações são built-in para o Access e o DAO, pressione F2 para abrir e olhando para o acesso e/ou bibliotecas DAO para ver como as enumerações são nomeadas. Se olhar para o intellisense, verá que ele mostra o tipo de dados, incluindo o nome de enumerações para que possa usá-lo e obtê-las de modo correto no seu próprio código . Claro que não está limitado a apenas acesso e / ou enumerações DAO.

Quais são os outros usos para as enumerações embutidas ? Deixe-me saber nos comentários!





Tags: VBA, Access, intellisense, procedure, built-in, 




Inline image 1


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 - 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 - Delete uma procedure específica dentro do módulo - Delete a procedure from a module using VBA


Dificilmente as senhas das planilhas hoje não são quebradas com grande facilidade, poucos de nós sabemos resguardar a segurança dos nossos códigos, que afinal de contas são resultado do nosso suor em codificar, decodificar e criar um algoritmo que atenda aos nossos clientes. Como nos proteger?

Não me perguntem o motivo de aprender a fazer isso, se você nunca pensou em fazê-lo é porque ainda está distante de merecer utilizá-lo.

Como posso deletar uma procedure dentro de um módulo na minha aplicação utilizando o VBA?

Sub DelProc (ByVal wb As Workbook, ByVal DeleteFromModuleName As String, ByVal ProcedureName As String)

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
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

Tags: Bernardes, MS, Microsoft, Office, Excel, delete, erase, module, procedure, function

André Luiz Bernardes
A&A® - Work smart, not hard in any place.
bernardess@gmail.com

diHITT - Notícias