Sustituir una palabra en un proyecto dentro del editor VBA usando una macro

Me gustaría cambiar una palabra que figura en multitud de macros (dentro del editor VBA) que tengo usando una macro.

2 Respuestas

Respuesta
1

Te dejo una macro que adapté de un ejemplo de mi manual 500Macros.

Sub cambiaCodigo()
'x Elsamatilde
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ódulo12" 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, "Hoja1") > 0 Then
                cadena = Application.WorksheetFunction.Substitute(cadena, "Hoja1", "Hojax")
                '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."
End Sub

Lo que hace es reemplazar en todo el proyecto el texto Hoja1 por Hojax.

Debes colocar la macro en un nuevo módulo y colocar su nombre para excluirlo del proceso en la línea que comento como 'Módulo12'.

Respuesta
1

H o l a:

Entra al menú Edición de VBA, en Reemplazar, selecciona Proyecto Actual, escribe la palabra a buscar, escribe la nueva palabra, y presiona Reemplazar todo:


Hola Dante, pero esos pasos los puedo automatizar a través de una macro. Dispongo de una macro que me abre todos los libros de una carpeta y quisiera incorporar una instrucción para poder reemplazar esa palabra en el editor.

Sub abrir_libros()

Dim Libros As String

Libros = Dir("C:\Jose Luis\Desktop\Pruebas\*.xlsm")

Do While Libros <> ""

Workbooks.Open "C:\Jose Luis\Desktop\Pruebas\" & Libros

Cells.Replace What:="Sheets", Replacement:="Sheet" 'sustituir esta instrucción por otra que me reemplace la palabra en el editor VBA

ActiveWorkbook.Close SaveChanges:=True

Libros = Dir

Loop

End Sub

¿Lo qué quieres es una macro para modificar macros?

En el siguiente enlace puedes encontrar información sobre cómo crear macros o modificarlas:

http://www.cpearson.com/excel/vbe.aspx 

O si tienes un lista de palabras se puede automatizar en una macro, por ejemplo

Buscar              Reemplazar por

palabra1                dato1

palabra2                dato2

palabra3                dato3.

Entonces haces un ciclo que lea la palabra1 y la reemplace por dato, después palabra2 por dato2, etc.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas