none
Excluir Modulo enquanto executa o CODE RRS feed

  • Pergunta

  • Pessoal, eu utilizo o code abaixo para excluir os módulos. Acontece que ele só exclui quando todo o CODE finaliza e preciso que ele exclua antes de tudo finalizar, pois crio uma cópia deste arquivo. Poderiam me ajudar.


    Sub Executar()
                Call RemoveModulo
                            'AQUI JÁ ERA PARA NÃO TER MÓDULO ALGUM, MAS ELE CONTINUA ATÉ O FIM.
                            'COMO RESOLVO ISSO?
                            ThisWorbook.Save
                Call ProximaExcute
    End Sub
    
    Sub RemoveModulo()
        'EXCLUIR MODULO
                Dim ModVb As VBComponents
                Set ModVb = application.VBE.ActiveVBProject.VBComponents
                ModVb.Remove VBComponent:=ModVb.Item("Converte")
                
                Set ModVb = application.VBE.ActiveVBProject.VBComponents
                ModVb.Remove VBComponent:=ModVb.Item("ESSBASE_MOD")
    End Sub
    


    segunda-feira, 6 de fevereiro de 2017 14:10

Todas as Respostas

  • Após o ThisWorbook.Save o módulo é removido? Ou só depois do Call ProximaExcute?

    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    segunda-feira, 6 de fevereiro de 2017 14:13
  • Não. É removido apenas no EndSub do procedimento EXECUTAR.
    segunda-feira, 6 de fevereiro de 2017 14:17
  • Bom dia pessoal!

    A ideia de tentar excluir o módulo era que esse módulo estava dando erro em computadores de 64-bit. Nunca tinha estudado as declarações para PC 64b então tive que estudar. Inserir o ePtrSafe após o Declare. Vou testar agora a tarde, mas acredito que irá funcionar. Alguém para me confirmar isso agora? 

    Private Declare PtrSafe Function EssVConnect Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant, ByVal username As Variant, ByVal password As Variant, ByVal server As Variant, ByVal application As Variant, ByVal database As Variant) As Long
    Private Declare PtrSafe Function EssVDisconnect Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant) As Long
    Private Declare PtrSafe Function EssVRetrieve Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant, ByVal Range As Variant, ByVal lockFlag As Variant) As Long


    Acredito que esse seja a real solução do meu problema, a declaração.

    terça-feira, 7 de fevereiro de 2017 12:51
  • #If VBA7 Then
        Private Declare PtrSafe Function EssVConnect Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant, ByVal username As Variant, ByVal password As Variant, ByVal server As Variant, ByVal application As Variant, ByVal database As Variant) As Long
        Private Declare PtrSafe Function EssVDisconnect Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant) As Long
        Private Declare PtrSafe Function EssVRetrieve Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant, ByVal Range As Variant, ByVal lockFlag As Variant) As Long
    #Else
        Private Declare Function EssVConnect Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant, ByVal username As Variant, ByVal password As Variant, ByVal server As Variant, ByVal application As Variant, ByVal database As Variant) As Long
        Private Declare Function EssVDisconnect Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant) As Long
        Private Declare Function EssVRetrieve Lib "ESSEXCLN.XLL" (ByVal sheetName As Variant, ByVal Range As Variant, ByVal lockFlag As Variant) As Long
    #End If
    

    Tente dessa forma.

    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    quarta-feira, 8 de fevereiro de 2017 11:32
    Moderador
  • Oi Felipe!

    Depois de umas lidas eu tinha feito dessa forma. Mas não conseguir tirar uma dúvida, se eu não usar o #If napenas diretamente o PtrSafe, não funcionaria normalmente em computadores 32 ou 64?

    quinta-feira, 9 de fevereiro de 2017 12:04
  • Tem que usar o #If para funcionar também no Excel 2007 ou inferior.

    http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG

    quinta-feira, 9 de fevereiro de 2017 17:36
    Moderador