Adaptar macro ????

3 envíos / 0 nuevos
Último envío
eugeniocol
Imagen de eugeniocol
Offline
última acción: Hace 2 años 2 meses
Nivel 1 - 200 puntos
alta: 29/08/2017 - 17:21
Puntos: 1675
Adaptar macro ????

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

 

Cron
Imagen de Cron
Offline
última acción: Hace 7 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
En tu código has cambiado la

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

eugeniocol
Imagen de eugeniocol
Offline
última acción: Hace 2 años 2 meses
Nivel 1 - 200 puntos
alta: 29/08/2017 - 17:21
Puntos: 1675
respuesta

ok

Lo probare

Salud2...