Notifications
Clear all

Alterar código de VBA's com Macro

5 Posts
5 Usuários
0 Reactions
1,351 Visualizações
(@lealbruuno)
Posts: 4
New Member
Topic starter
 

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... :D

 
Postado : 21/07/2016 5:31 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Coloque o endereço em uma celula/range da planilha e na rotina algo +/- assim:
workbooks.opem filename:= range("A2").value

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/07/2016 7:17 pm
(@messiasmbm)
Posts: 223
Estimable Member
 

Pode sim...
É só adaptar ao seu Projeto...


Sub saberOMes()
Dim meumes
Dim mes
meumes = InputBox("Digite abaixo o NÚMERO de acordo com o mês : 1-Janeiro 2-Fevereiro 3-Março 4-Abril 5-Maio 6-Junho 7-Julho 8-Agosto 9-Setembro 10-Outubro 11-Novembro 12-Dezembro", "IMPUTBOX")
Select Case meumes
Case 1
mes = "Janeiro"
Case 2
mes = "Fevereiro"
Case 3
mes = "Março"
Case 4
mes = "Abril"
Case 5
mes = "Maio"
Case 6
mes = "Junho"
Case 7
mes = "Julho"
Case 8
mes = "Agosto"
Case 9
mes = "Setembro"
Case 10
mes = "Outubro"
Case 11
mes = "Nobembro"
Case 12
mes = "Dezembro"
End Select
Workbooks.Open Filename:="C:documentos" & mes & "arquivo.xls"
End Sub


 
Postado : 21/07/2016 8:12 pm
(@osvaldomp)
Posts: 0
Eminent Member
 

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

Este comando irá abrir o arquivo que tenha o nome do mês corrente.

Workbooks.Open Filename:="C:documentos" & Format(Date, "mmmm") & "arquivo.xls"

Osvaldo

 
Postado : 22/07/2016 9:11 am
pfarias
(@pfarias)
Posts: 265
Reputable Member
 

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... :D

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