Notifications
Clear all

Excluir Modulo enquanto executa o CODE

9 Posts
4 Usuários
0 Reactions
1,365 Visualizações
pfarias
(@pfarias)
Posts: 265
Reputable Member
Topic starter
 

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

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 06/02/2017 9:07 am
(@mprudencio)
Posts: 2749
Famed Member
 

Pietro achei interessante seu codigo mas nao consegui fazer funcionar simplesmente colocando em um botao.

Precisa fazer algo?

Agora falando do seu problema vc faz uma copia do arquivo em outro local?

E somente para isso ?

Se for é possivel fazer de forma diferente.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 06/02/2017 9:31 am
pfarias
(@pfarias)
Posts: 265
Reputable Member
Topic starter
 

Pietro achei interessante seu codigo mas nao consegui fazer funcionar simplesmente colocando em um botao.
Precisa fazer algo?

Para funcionar você precisa primeiro habilitar na central de confiabilidade da macro.

(...)
Agora falando do seu problema vc faz uma copia do arquivo em outro local?
E somente para isso ?
Se for é possivel fazer de forma diferente.

Acontece que existem alguns módulos que estão dando problemas em computadores 64bits em usuários finais. É possível alterar esse código para 64bits. Mas os usuários finais não utilizam esse módulo, então não tem para que modifica-lo e continuar com ele.
Então criei esse procedimento para excluir esses módulos. Acontece que se eu quiser que funcione eu teria que criar dois procedimentos e manualmente executar o segundo, já que os módulos são excluídos apenas no final do procedimento EXECUTAR. Não que seja um trabalho árduo executar o segundo módulo, mas se existe a possibilidade de fazer isso em um único procedimento, prefiro fazer-lo.

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 06/02/2017 9:47 am
(@skulden)
Posts: 170
Estimable Member
 

Pietro,

Talvez não seja o caso do procedimento ocorrer muito rápido então enquanto o computador está no tempo de "refresh" da tela, após ter excluido o módulo, ele já comece a concluir a segunda call?

É um caso, já passei por coisa parecida. Ele excluia um módulo mas antes de tudo atualizar ele já chamava a segunda call.

Tente colocar um tempo de espera antes dele continuar a rodar o código, mais ou menos uns 5 segundos.

Abraços.

Se a resposta lhe foi útil, clique no joinha!

 
Postado : 06/02/2017 10:15 am
pfarias
(@pfarias)
Posts: 265
Reputable Member
Topic starter
 

Pietro,

Talvez não seja o caso do procedimento ocorrer muito rápido então enquanto o computador está no tempo de "refresh" da tela, após ter excluido o módulo, ele já comece a concluir a segunda call?

É um caso, já passei por coisa parecida. Ele excluia um módulo mas antes de tudo atualizar ele já chamava a segunda call.

Tente colocar um tempo de espera antes dele continuar a rodar o código, mais ou menos uns 5 segundos.

Abraços.

Também pensei que fosse isso e tentei colocar uma espera. Até em modo de depuração ele não exclui. Somente quando o procedimento todo é concluído.

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 06/02/2017 10:27 am
(@skulden)
Posts: 170
Estimable Member
 

Isso afeta o restante do código? De que forma?

Se a resposta lhe foi útil, clique no joinha!

 
Postado : 06/02/2017 11:13 am
pfarias
(@pfarias)
Posts: 265
Reputable Member
Topic starter
 

Isso afeta o restante do código? De que forma?

O código não é afetado. Mas o que preciso é que nessa cópia que estou criando esteja sem o módulo que estou excluindo.

Acontece que possuo um procedimento que envia automaticamente um e-mail com este arquivo anexado diversas vezes através de um laço. Por isso preciso que seja excluído antes esse módulo.

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 06/02/2017 12:55 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa noite Pietro,

Já que essas cópias que você está fazendo precisa ter todos os módulos?
Porque você pode pedir para 'Salvar como...' e salvar como Xlsx ao invês de Xlsm, os arquivos gerados não terão nenhum módulo.

att,

 
Postado : 06/02/2017 5:31 pm
pfarias
(@pfarias)
Posts: 265
Reputable Member
Topic starter
 

Boa noite Pietro,

Já que essas cópias que você está fazendo precisa ter todos os módulos?
Porque você pode pedir para 'Salvar como...' e salvar como Xlsx ao invês de Xlsm, os arquivos gerados não terão nenhum módulo.

att,

Bom dia Bruno!

Já atualizo esse relatório a um tempo, e eu fazia dessa forma. Mas agora preciso que tenha um módulo que utilizo para alguns funções da ferramenta. E infelizmente preciso desse módulo.

O módulo que está me dando essa dor de cabeça é um no qual utilizo para atualizar um cubo e declara algumas funções. Recentemente alguns usuários começaram a ter computadores de 64-bit. Nunca tive que escrever os código com a ideia de trabalhar com algumas funções em 64-bit. Então tive que dá uma lida.

Minhas declarações ficaram assim. Vou testar ainda hoje, mas acredito que não vai retornar erro. Alguém pode me confirmar?

Claro que ainda quero saber como excluir um módulo enquanto executo o procedimento. Mas pelo que vi a solução real para meu problema é a declaração :D :D

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 07/02/2017 7:44 am