Hola buenas.
Tengo esta macro que funciona ok, consiste en cambiar determinados datos de modulos de otro libro.
O sea cambiar en el Libro X en el Modulo 3, este dato SOLO 12 EUR Nº12 por este SOLO 12 EUR Nº18
Sub Cambiar_MODULO_LIBRO_Original()
Dim VBModulo As CodeModule
Dim LineasCod As Integer, x As Integer
Dim Cadena As String
Set VBModulo = Workbooks.Open("C:Ruta……\Libro.xlsm").VBProject.VBComponents("Módulo3").CodeModule
Let LineasCod = VBModulo.CountOfLines
For x = 1 To LineasCod
Let Cadena = VBModulo.Lines(x, 1)
If InStr(1, Cadena, "SOLO 12 EUR Nº12") > 0 Then
Let Cadena = Application.WorksheetFunction.Substitute(Cadena, "SOLO 12 EUR Nº12", " SOLO 12 EUR Nº18")
VBModulo.replaceLine (x), Cadena
End If
Next x
End Sub
Trato de adaptarla para cambiar este otro dato en otros libros, cambiar en el Libro X en el Modulo 3, este dato ejemplo : “>1” por este otro “>170”
Y claro no va adaptándola asi :
Ademas serian libros dentro de la misma carpeta.
Sub Cambiar_MODULO_LIBRO()
Dim VBModulo As CodeModule
Dim LineasCod As Integer, x As Integer
Dim Value As String
Set VBModulo = Workbooks.Open("C:Ruta…….\Libro.xlsb").VBProject.VBComponents("Módulo3").CodeModule
Let LineasCod = VBModulo.CountOfLines
For x = 1 To LineasCod
Let Cadena = VBModulo.Lines(x, 1)
If InStr(1, Cadena, ">1") > 0 Then
Let Cadena = Application.WorksheetFunction.Substitute(Value, ">1", ">170")
VBModulo.replaceLine (x), Cadena
End If
Next x
End Sub
Un Saludo…….
En tu código has cambiado la definición del original. Donde ponías:
Dim cadenas As String
Tú pones lo siguiente:
Dim Value as String
Luego dentro de tu código utilizas Cadena. Una de dos, o llamas Cadena a la variable, o utilizas Value cuando llames a la variable. Te recomiendo no utilizar Value pues, aunque no es una palabra reservada, tiene significado en el código y puede llegar a confundir.
Como añadido, y aunque funcione así, la función Application.WorksheetFunction.Substitute tiene su "alter ego" en VBA en la función replace. Quizás puedas simplificar algo (aunque esto es un poco detallista).
Un saludo
ok
Lo probare
Salud2...