Visual Basic para Aplicaciones - buscar y ejecutar una macro

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 122 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

buscar y ejecutar una macro

Publicado por Happy1 (4 intervenciones) el 13/02/2020 18:17:10
Hola.
Necesito en un texto de Word que me busque todos los "1*" y me los reemplace por una macro que ya tengo creada. Me podrían ayudar?

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 814
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

buscar y ejecutar una macro

Publicado por Antoni Masana (294 intervenciones) el 14/02/2020 14:42:29
Sube un ejemplo

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 122 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

buscar y ejecutar una macro

Publicado por Happy1 (4 intervenciones) el 14/02/2020 17:50:04
El ejemplo sería el siguien. Tengo un documento de texto en word y hay varios "1*" y lo que intento es crear una macro que busque todos los "1*" de todo el documento y los sustituya por una macro que ya tengo creada. La macro sería así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Alonso()
'
' Alonso Macro
' Macro grabada el 26/06/03 por Alberto Bastián Ordiales
'
    Selection.TypeText Text:=vbTab
    Selection.Font.Bold = wdToggle
    Selection.Font.Size = 9
    Selection.TypeText Text:="LA SEÑORA ROMERO ALONSO "
    Selection.Font.Size = 10
    Selection.TypeText Text:="(consejera de Participación, Cooperación y Derechos Humanos):"
    Selection.Font.Bold = wdToggle
    Selection.TypeText Text:=" "
End Sub

No sé si me he explicado bien, si no se entiende me decís he intento explicarlo de otra forma.

Un saludo y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 814
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

buscar y ejecutar una macro

Publicado por Antoni Masana (294 intervenciones) el 14/02/2020 20:41:53
A ver si lo entiendo:

Según tu texto quieres buscar un los textos "1*" y reemplazarlo por una macro ¿Que pinta una macro en medio de un documento?

Segun lo explicas yo lo veo asi:

Texto Original:
1
Antonio vive en 1*

Texto resultante:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Antonio vive en Sub Alonso()
    '
    ' Alonso Macro
    ' Macro grabada el 26/06/03 por Alberto Bastián Ordiales
    '
    Selection.TypeText Text:=vbTab
    Selection.Font.Bold = wdToggle
    Selection.Font.Size = 9
    Selection.TypeText Text:="LA SEÑORA ROMERO ALONSO "
    Selection.Font.Size = 10
    Selection.TypeText Text:="(consejera de Participación, Cooperación y Derechos Humanos):"
    Selection.Font.Bold = wdToggle
    Selection.TypeText Text:=" "
End Sub

NO TIENE NINGÚN SENTIDO.

Deduzco que lo que quieres es que la macro busque el texto "1*" y lo reemplace por el texto y las características de la macro que muestras.

Vamos que no sabes como buscar y reemplazar.

Hay un pequeño truco y es usar la GRABADORA DE MACROS, te pone el 95% del código y el resto es relativamente facil.

Quizas esto te pueda servir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Sub Macro3()
    CommandBars("Navigation").Visible = False
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "1*"
        .Replacement.Text = "1*"
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
 
    On Error GoTo Fin
 
    While True
        With Selection
            If .Find.Forward = True Then
                .Collapse Direction:=wdCollapseStart
            Else
                .Collapse Direction:=wdCollapseEnd
            End If
            .Find.Execute Replace:=wdReplaceOne
            If .Find.Forward = True Then
                .Collapse Direction:=wdCollapseEnd
            Else
                .Collapse Direction:=wdCollapseStart
            End If
            .Find.Execute
        End With
        Call Alonso
    Wend
Fin:
End Sub
 
Sub Alonso()
    '
    ' Alonso Macro
    ' Macro grabada el 26/06/03 por Alberto Bastián Ordiales
    '
    Selection.TypeText Text:=vbTab
    Selection.Font.Bold = wdToggle
    Selection.Font.Size = 9
    Selection.TypeText Text:="LA SEÑORA ROMERO ALONSO "
    Selection.Font.Size = 10
    Selection.TypeText Text:="(consejera de Participación, Cooperación y Derechos Humanos):"
    Selection.Font.Bold = wdToggle
    Selection.TypeText Text:=" "
End Sub


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 122 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

buscar y ejecutar una macro

Publicado por Happy1 (4 intervenciones) el 15/02/2020 01:43:07
En primer lugar muchas gracias por tu respuesta.

Que no lo entiendas no quiere decir que no tiene sentido. Efectivamente, lo que intento es crear una macro que busque todos los 5* y los reemplace por una macro.

jejeje, bueno, lo de buscar y reemplazar. La verdad es que si te hubieses fijado un poquito en la macro te darías cuenta que hay dos tipos de tamaño de letra (Arial 9 y Arial 10). Me gustaría que me indicaras cómo buscar 5* y lo reemplazas por un texto que tiene dos tamaños de letra. La verdad es que siento mucha curiosidad. No te lo tomes a mal, pero me ha dado la impresión que te había molestado mi ignorancia en el tema.

Lo de utilizar la grabadora de macro, hasta ahí ya llego y un luego te mostraré cómo he llegado a conseguirlo, aunque supongo que no es la forma correcta.

La macro que me indicas creo que se trata de una bucle sin fin, te acaba bloqueando el word. Yo la he probado y es lo que hace.

Yo lo que he conseguido hacer fue esto:

Sub ABtitulo5()
'
' ABtitulos5 Macro
'
'
Selection.Find.ClearFormatting
With Selection.Find
.Text = "5*"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Application.Run MacroName:="Gonzalez"
End Sub

Sub Gonzalez()
'
' Gonzalez Macro
' Macro grabada el 26/06/03 por Alberto Bastián Ordiales
'
Selection.TypeText Text:=vbTab
Selection.Font.Bold = wdToggle
Selection.Font.Size = 9
Selection.TypeText Text:="EL SEÑOR GONZÁLEZ GONZÁLEZ "
Selection.Font.Size = 10
Selection.TypeText Text:="(consejero de Hacienda):"
Selection.Font.Bold = wdToggle
Selection.TypeText Text:=" "
End Sub

Sub ABucle5()

Dim i As Integer
Dim intVeces As Integer

intVeces = InputBox("Ingresa el número de veces a repetir:", "Mi Sistema", 10)

For i = 1 To intVeces

ABtitulo5

Next i

End Sub

Es decir, tengo una primera macro (ABtitulo5) donde hago una búsqueda de 1*, cierro la búsqueda y ejecuto una macro (Gonzalez) y al final creo otra macro en en bucle variable (ABucle5) que al ejecutar me pregunta las veces que quiero ejecutar la macro. El inconveniente es que primero tengo que hacer una búsqueda en el documento para saber las veces que se repite 5*.

Lo que intentaba averiguar es si había alguna otra forma mucho más rápida y directa.

De todas formas te agradezco mucho tu ayuda porque siempre se aprende de la gente y yo siempre estoy dispuesto a hacerlo. Yo estoy abierto a cualquier otra solución que me puedas proporcionar.

Tal vez no tenga sentido para tí todo esto, se trata de una grabación de un debate entre varia personas con intervenciones largas y cortas la cual transcribo con google docs, el problema es que transcribe sin puntuar, todo seguido, y lo que intento es insertar los oradores intervinientes para luego darle sentido a las frases. En definitiva, una transcripción .

Un saludo y de nuevo muchísimas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar