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

VBA Access - Deletando objetos - How to Delete Objects Programmatically

VBA Access - Deletando objetos - How to Delete Objects Programmatically


Docmd.DeleteObject Method

O método DoCmd DeleteObject executa a deleção de objetos ativos no Visual Basic for Applications.


Este comando é usado várias vezes para remover objetos temporários criados durante a execução de certos processos nas nossas aplicações de banco de dados no MS Access database.


O texto abaixo mostra a syntaxe e as opções para o comando 'Delete Object'.


DoCmd.DeleteObject Opções para o parâmetro tipo de objeto - AcObjectType. acDataAccessPage acDefault (default) acDiagram acForm acFunction acMacro acModule acQuery acReport acServerView acStoredProcedure acTable


  15.01.2025 
Sub DeleteObjectExample(objectType As AcObjectType, objectName As String)
    ' Função para excluir objetos do Access com base no tipo e nome fornecidos.
    ' O parâmetro 'objectType' especifica o tipo do objeto (como acTable, acQuery, etc.)
    ' O parâmetro 'objectName' é o nome do objeto a ser excluído.

    On Error GoTo Err_Handler ' Trata erros caso ocorram durante a execução.

    ' Verifica se o nome do objeto foi fornecido corretamente.
    If Len(objectName) = 0 Then
        MsgBox "Nome do objeto não especificado.", vbExclamation, "Erro"
        Exit Sub
    End If

    ' Dependendo do tipo de objeto, chama a função DoCmd.DeleteObject com o tipo e nome especificados.
    Select Case objectType
        Case acTable
            ' Exclui uma tabela do banco de dados.
            DoCmd.DeleteObject acTable, objectName
            MsgBox "Tabela '" & objectName & "' excluída com sucesso!", vbInformation, "Sucesso"

        Case acQuery
            ' Exclui uma consulta (query) do banco de dados.
            DoCmd.DeleteObject acQuery, objectName
            MsgBox "Consulta '" & objectName & "' excluída com sucesso!", vbInformation, "Sucesso"

        Case acForm
            ' Exclui um formulário do banco de dados.
            DoCmd.DeleteObject acForm, objectName
            MsgBox "Formulário '" & objectName & "' excluído com sucesso!", vbInformation, "Sucesso"

        Case acReport
            ' Exclui um relatório do banco de dados.
            DoCmd.DeleteObject acReport, objectName
            MsgBox "Relatório '" & objectName & "' excluído com sucesso!", vbInformation, "Sucesso"

        Case acMacro
            ' Exclui uma macro do banco de dados.
            DoCmd.DeleteObject acMacro, objectName
            MsgBox "Macro '" & objectName & "' excluída com sucesso!", vbInformation, "Sucesso"

        Case acModule
            ' Exclui um módulo VBA do banco de dados.
            DoCmd.DeleteObject acModule, objectName
            MsgBox "Módulo '" & objectName & "' excluído com sucesso!", vbInformation, "Sucesso"

        Case acFunction
            ' Exclui uma função definida pelo usuário do banco de dados.
            DoCmd.DeleteObject acFunction, objectName
            MsgBox "Função '" & objectName & "' excluída com sucesso!", vbInformation, "Sucesso"

        Case acStoredProcedure
            ' Exclui uma Stored Procedure do banco de dados.
            DoCmd.DeleteObject acStoredProcedure, objectName
            MsgBox "Stored Procedure '" & objectName & "' excluída com sucesso!", vbInformation, "Sucesso"

        Case acDataAccessPage
            ' Exclui uma página de acesso de dados (se estiver usando o Access Services).
            DoCmd.DeleteObject acDataAccessPage, objectName
            MsgBox "Página de acesso de dados '" & objectName & "' excluída com sucesso!", vbInformation, "Sucesso"

        Case Else
            ' Caso o tipo de objeto fornecido não seja válido.
            MsgBox "Tipo de objeto inválido ou não suportado.", vbCritical, "Erro"
            Exit Sub
    End Select

Exit_Sub:
    Exit Sub

Err_Handler:
    ' Exibe a mensagem de erro caso algo dê errado durante a execução.
    MsgBox "Erro " & Err.Number & ": " & Err.Description, vbCritical, "Erro"
    Resume Exit_Sub
End Sub

 Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série de Livros nut Project 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


 PUDIM PROJECT 

eBook - PT - PUDIM PROJECT 2024 - Python Volume 01 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 02 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 03 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 04 - Funções para Automatização - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 05 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 06 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 07 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 08 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 09 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 10 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 11 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes

VBA Access - Registrando o nome das máquinas (Workstation) - VBA Access: How to Record Workstation Names (Machine Names)

VBA Access - Registrando o nome das máquinas (Workstation) - VBA Access: How to Record Workstation Names (Machine Names)

Muitas vezes queremos deixar registrados os nomes do computadores qeu acessaram a nossa aplicação. Isso é possível através do uso de uma fnução como a demonstrada abaixo: Com poucas alterações esse código poderá ser utilizado também no Word, Excel, Powerpoint e quaisquer aplicações que utilizem o VBA. 




 15.01.2025 
' Função que obtém o nome do computador (nome da máquina)
Function ComputerN() As String
    ' Tratamento de erros
    On Error GoTo Err_Handler

    ' Declaração das variáveis
    Dim strName As String ' Variável para armazenar o nome do computador
    Dim lngLen As Long ' Variável para armazenar o comprimento da string do nome do computador

    ' Definindo o comprimento do nome do computador
    lngLen = 16&

    ' Inicializando a string strName com caracteres nulos (vbNullChar)
    strName = String$(lngLen, vbNullChar)

    ' Chamando a API para obter o nome do computador
    If apiGetComputerName(strName, lngLen) = 0& Then
        ' Se a função apiGetComputerName falhar, atribui "Desconhecido"
        ComputerN = "Desconhecido"
    Else
        ' Caso contrário, retorna o nome do computador (removendo caracteres nulos adicionais)
        ComputerN = Left$(strName, lngLen)
    End If

    ' Saída sem erros
    Exit_Handler:
        Exit Function

    ' Tratamento de erros
    Err_Handler:
        ' Em caso de erro, loga o erro com número e descrição
        Call LogError(Err.Number, Err.Description, "ComputerN")
        Resume Exit_Handler
End Function


 Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série de Livros nut Project 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


 PUDIM PROJECT 

eBook - PT - PUDIM PROJECT 2024 - Python Volume 01 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 02 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 03 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 04 - Funções para Automatização - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 05 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 06 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 07 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 08 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 09 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 10 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 11 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes

VBA - Exibindo a Lista de Processos ativos na sua máquina usando (WMI)

Vez ou outra listamos todos os programas que estão sendo executados em nossa máquina. Podemos disponibilizar tais informações aos usuários da nossa aplicação através da funcionalidade abaixo, podemos saber todos os processo que estão rodando na máquina. Function LoadInProcess() Dim colProcessList Dim objProcess Set colProcessList = GetObject("Winmgmts:").ExecQuery("Select * from Win32_Process") ListProcessNow.clear For Each objProcess In colProcessList ListProcessNow.additem objProcess.Name Next Set colProcessList = Nothing Se você quiser detalhes sobre um proceso específico, poderá filtrá-los por processo. Por exemplo, se desejar analisar ou finalisar o Iexplore.exe rodando na sua máquina, poderá tentar o código abaixo: Let strProcess = "Iexplore.exe" Dim colProcessList Dim objProcess Set colProcessList = GetObject("Winmgmts:").ExecQuery("Select * from Win32_Process where name = '" & strProcess & "'") For Each objProcess In colProcessList objProcess.Terminate Next Set colProcessList = Nothing Queira aprofundar o seu conhecimento no link abaixo, afinal, foram eles que criaram o que podemos explorar hoje... http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_reference.asp
André Luiz Bernardes A&A - WORK, DON´T PLAY! http://al-bernardes.sites.uol.com.br/ bernardess@gmail.com

VBA Excel - Desbloqueando as worksheets com VBA (How to hack a lost worksheet password with VBA to unprotect the worksheet)




Por estarmos envolvidos em tantos projetos simultaneamente, não raro acontece de esquecermos as senhas de proteção das worksheets. Neste momento saimos correndo atrás de programas que possam desbloquear nossas planilhas. Abaixo está um bem estruturado código capaz de retirar a proteção das nossas woksheets. É uma implementação válida e digna de ficar sempre à mão. Agora poderá a qualquer momento copiá-la daqui e implementá-la em sua planilha para o pronto desbloqueio. Use a chamada para evocar a solução:

Call AllPasswordsRemover(ActiveWorkbook)

Public Sub AllPasswordsRemover(wb As Workbook)
 Dim w1 As Worksheet Dim w2 As Worksheet
 Dim i As Integer Dim j As Integer Dim k As Integer
 Dim l As Integer Dim m As Integer Dim n As Integer
 Dim i1 As Integer Dim i2 As Integer Dim i3 As Integer
 Dim i4 As Integer Dim i5 As Integer Dim i6 As Integer
 Dim PWord1 As String Dim ShTag As Boolean
 Dim WinTag As Boolean ' Início da tentativa de desproteger o wb (workBook), Application.ScreenUpdating = False ' Verifica se está protegido With wb Let WinTag = .ProtectStructure Or .ProtectWindows End With Let ShTag = False ' Estão realmente protegidos? For Each w1 In Worksheets Let ShTag = ShTag Or w1.ProtectContents Next w1 ' Caso não haja proteção, o processo é encerrado! If Not ShTag And Not WinTag Then GoTo exx End If ' Dependendo da senha e de quantas planilhas estiverem protegidas com diferentes senhas, ' o processo talvez leve um tempo considerável. Estimo entre 3-6 minutos por senha. If Not WinTag Then ' Workbook não está protegido... vai checar as planilhas... Else ' Workbook está protegido, desprontegendo-o On Error Resume Next Do For i = 65 To 66: For j = 65 To 66: For k = 65 To 66 For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66 For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66 For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126 With wb .Unprotect Chr(i) & Chr(j) & Chr(k) & _ Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _ Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) If .ProtectStructure = False And _ .ProtectWindows = False Then Let PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _ Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _ Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) ' Achamos o password para este workbook. MsgBox "A Worksheet '" & w1.Name & "' foi desprotegida usando o seguinte hash " & _ "Hashed Password:" & Chr(13) & PWord1 & Chr(13) & "Tente desproteger outras " & _ "planilhas com este mesmo password..." Exit Do End If End With Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: Next Loop Until True On Error GoTo 0 End If If WinTag And Not ShTag Then ' Worksheets Não estão protegidas. GoTo exx End If ' Caso as worksheets estiverem protegidas... On Error Resume Next For Each w1 In Worksheets w1.Unprotect PWord1 Next w1 On Error GoTo 0 ShTag = False ' Checa se a tentativa foi bem sucedida. For Each w1 In Worksheets ' Checa para todas as ShTag engatilhadas para 1, se não. Let ShTag = ShTag Or w1.ProtectContents Next w1 ' Caso haja worksheet protegida, desprotege-a. If ShTag Then For Each w1 In Worksheets With w1 If .ProtectContents Then On Error Resume Next Do For i = 65 To 66: For j = 65 To 66: For k = 65 To 66 For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66 For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66 For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126 .Unprotect Chr(i) & Chr(j) & Chr(k) & _ Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _ Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) If Not .ProtectContents Then PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _ Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _ Chr(i4) & Chr(i5) & Chr(i6) & Chr(n) ' Achamos 1! MsgBox "A Worksheet '" & w1.Name & "' foi desprotegida usando o seguinte hash " & _ "Hashed Password:" & Chr(13) & PWord1 & Chr(13) & "Tente desproteger outras " & _ "planilhas com este mesmo password..." For Each w2 In Worksheets w2.Unprotect PWord1 Next w2 Exit Do End If Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: Next Loop Until True On Error GoTo 0 Else Debug.Print ("Estas worksheets '" & w1.Name & "' não estavam protegidas.") End If End With Next w1 End If GoTo exx exx: Application.ScreenUpdating = True
End Sub

 Para os que desejarem aprofundar-se na lógica do como foi possível chegar a este resultado poderão fazê-lo Aqui.

VBA Excel - Previna o recalculo durante a execução do seu código (Preventing Calculation).

Algo que costuma deixar a execução de uma série de passos em nossas planilhas é o fato de o MS Excel recalcular tudo a cada passo alterado na nossa aplicação. Isso acaba por tornar lentíssima a execução das nossas aplicações. É lógico que podemos dar um jeito nisso. Como? Basta ampliar o exemplo abaixo na sua aplicação. Bons estudos!
Sub StopCalculation()
      Application.Calculation = xlCalculationManual

   ' Digite o seu código aqui.

   Application.Calculation = xlCalculationAutomatic
End Sub
André Luiz Bernardes A&A - WORK, DON´T PLAY! http://al-bernardes.sites.uol.com.br/ bernardess@gmail.com

Tornando a execução do seu código mais rápida por para a atualização da tela (Stop Screen Flickering)





Muitas vezes quando estamos manipulando inúmeras colunas, linhas e células, ficamos felizes por acompanhar os deslocamentos, agrupamentos e recálculos de tudo o que elaboramos. Isso acontece na primeira e segunda vez, depois torna-se extremamente irritantes visualizarmos a tela deslizando prá elá e prá cá na nossa frente enquanto a planilha demora infinitos minutos até finalizar a execução. Seus problemas acabaram. Basta que desligue a atualização da tela e sua planilha será atualiza somente uma vez, após ter processado tudo o que pediu que fosse processado. Divirta-se...

Sub StopFlickering()
   Application.ScreenUpdating=False

   ' Adicione o seu código.

   Application.ScreenUpdating=True
End Sub
André Luiz Bernardes A&A - WORK, DON´T PLAY! http://al-bernardes.sites.uol.com.br/ bernardess@gmail.com

VBA Excel: Modo Calculation

Modo Calculation

Normalmente o MS Excel recalculará uma Célula ou um Range quando estes forem alterados. Às vezes essa atualização trás certos transtornos, fazendo com que a performance caia. Podemos prevenir que o MS Excel recalcule o workbook por usarmos o statement:.

Neste exemplo abaixo forçamos o recálculo para o modo manual:

Let Application.Calculation = xlCalculationManual

Também temos a possibilidade de mudar esse statement no final do nosso código:

Let Application.Calculation = xlCalculationAutomatic

André Luiz Bernardes A&A - WORK, DON´T PLAY! http://al-bernardes.sites.uol.com.br/ bernardess@gmail.com
diHITT - Notícias