Macro para cambiar varias líneas de otra macro

Tengo una macro que abre todos los libros Excel contenidos en una carpeta y cambia un texto concreto de una línea de código VBA.

Estoy intentando modificarla para que pueda cambiar varias líneas pero no lo consigo, he intentado referenciarlo al texto contenido en otras celdas pero no lo consigo.

Este es el código:

Sub modificar_macros_archivos()
    ChDir (ActiveWorkbook.Path)
    arcact = ActiveWorkbook.Name
    Dim arch As String
    arch = Dir("*.xlsm")
    Do Until arch = ""
        If arch = arcact Then GoTo Salto
            Workbooks.Open Filename:=arch
With Application.VBE.ActiveVBProject
On Error Resume Next
'se recorre desde 1 hasta el total de objetos del proyecto
For ele = 1 To .VBComponents.Count
'se excluye el módulo donde está esta macro
If .VBComponents(ele).Name <> "Módulo15" Then
    'se cuentan las líneas en el objeto que se está observando
    LineasCod = .VBComponents(ele).codemodule.CountOfLines
'si el total de líneas es > 0 'busca en cada línea el texto
    If LineasCod > 0 Then
        For x = 1 To LineasCod
            cadena = .VBComponents(ele).codemodule.Lines(x, 1)
            'si el texto buscado se encuentra en la línea se lo reemplaza por el nuevo
            If InStr(1, cadena, "ThisWorkbook.Close") > 0 Then
                cadena = Application.WorksheetFunction.Substitute(cadena, "ThisWorkbook.Close", "'ThisWorkbook.Close")
                'se reemplaza la línea por la nueva cadena
                .VBComponents(ele).codemodule.replaceLine (x), cadena
            End If
        Next x
    End If
End If
'se repite el bucle para el próximo objeto del proyecto
Next ele
End With
'MsgBox "Fin del proceso de cambio."
ActiveWorkbook.Close SaveChanges:=True
Salto:
            arch = Dir
Loop
End Sub

1 respuesta

Respuesta
1

¿Te da algún error? ¿Hace algo? ¿No hace nada? ¿Algún otro detalle que nos ayude a ayudarte?

Abraham Valencia

Sustituyo el texto "ThisWorkbook.Close" por Sheets("hoja1").Range("B1") y en esa celda pongo el texto que quiero modificar en varias líneas. Lo ejecuto y no hace nada.

Cadena

El foro tiene muchas fallas, en mi respuesta hay alguna palabra que no permite y para no andar adivinando cuál es, te envío mi respuesta tipo imagen:

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas