Olá pessoal,
Estou procurando formas de alterar uma parte do texto das macros existentes em um arquivo com outra macro.
Por exemplo: Ao iniciar uma macro a mesma vai abrir um arquivo da pasta de "Junho", porém quando for "Julho" e eu criar outra pasta para "Julho", esta macro não irá executar por conta que o link mudou de "Junho" para "Julho". É possível criar uma macro para que ela substitua um texto por outro em lote?
Workbooks.Open Filename:= "C:documentosJunhoarquivo.xls"
Workbooks.Open Filename:= "C:documentosJulhoarquivo.xls"
Hoje eu faço essa alteração manualmente macro por macro. Porém seria de grande ajuda se compartilhassem se isso é possível...
E aw lealbruuno, tubo bem?
Veja só todas as opções que o pessoal deu são bastantes satisfatórias. E trabalha bem melhor.
Porém, a um tempo atrás queria fazer algo parecido com o que você diz. E não cheguei longe. Ou melhor, deu em anda. Hoje com um conhecimento melhor sobre o assunto tenho a possibilidade de alterar um código dentro de um módulo a partir de uma outra planilha.
Então irei mostrar abaixo como realizar este procedimento. Mas deixo claro, que neste seu caso as opções dadas pelo pessoal, é mais viável. Mas futuramente alguém pode precisar de algo do tipo, o que tive muita dificuldade de achar na época, e qualquer informação adicional é bem vinda.
Ok, vamos lá..
Criei dua pasta para este exemplo. A Pasta1.xlsb e a Pasta2.xlsb. Na Pasta2.xlsb possuo um módulo nomeado Módulo_Pasta2. Dentro deste Módulo tenho um procedimento chamado ExibirMsg.
Sub ExibirMsg()
MsgBox "Ola Mundo"
End Sub
Agora eu quero alterar o código MsgBox "Ola Mundo" para MsgBox "Meu nome é Pietro. Dá um joinha". Isto, vindo da outra pasta, a Pasta1.xlsb.
Então dentro de um módulo criado na Pasta1.xlsb, eu criei um procedimento chamado AlterarCode:
Obs:O procedimento a seguir, necessita da referencia Microsoft Visual Basic for Application Extensibility
'usar a refencia:
'Microsoft Visual Basic for Application Extensibility
Sub AlterarCode()
'Declaro a Pasta que será alterado o código.
'O ideal é utilizar o Application.GetOpenFilename
Dim Wkb As Workbook
Set Wkb = Workbooks.Open("C:Documents and Settings617018Desktopteste macroPasta2.xlsb")
'Declaro o Módulo do Projeto VBA existente dentro da Pasta2.xlsb
Dim ModVb As VBComponent
Set ModVb = Workbooks(Wkb.Name).VBProject.VBComponents("Módulo_Pasta2")
'usando o 'CodeModule.ReplaceLine' eu informo qual a linha que eu desejo alterar no 'Módulo_Pasta2'
'E o que será substituido.
ModVb.CodeModule.ReplaceLine 3, "MsgBox ""Meu nome é Pietro. Dá um joinha"""
End Sub
O resultado foi:
Espero ter ajudado! E saiba que existe 'n' coisas que podemos descobrir por este terreno.
Pietro Farias
Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.
ANALISTA X
Postado : 22/07/2016 12:06 pm