Visual Basic para Aplicaciones - VBA, buscar texto y crear Marcadores

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

VBA, buscar texto y crear Marcadores

Publicado por Happy1 (13 intervenciones) el 06/02/2021 21:58:41
En el documento que les envío hay varios puntos del orden del día entre texto y hay creadas dos macros:

"Ini" que lo que hace es situándome en la segunda fila da formato al párrafo y del número del orden del día copia, por ejemplo, "pnlp0177", al final de la macro queda el texto con un formato y seleccionado "10L/PNLP-0177". Lo que hago a continuación es crear un Marcador (yo le he asignado la combinación de teclado Ctrl+Mayús+F5), llamo al Marcador y a continuación pulso Ctrl+V para pegar lo que ya he copiado en la macro.

"Ini2" esta segunda macro intento automatizar todo el proceso, busco "*10L/", ejecuto la macro Ini y finalmente crea el Marcador. Aquí me surgen dos problemas: solo me busca un punto del orden del día y tengo que ejecutar de nuevo la macro si quiero que busque más; y el segundo problema es que sí crea la macro pero a partir de la segunda pone el mismo nombre que el primer Marcador.

Las macros son:

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Sub Ini()
'
' Ini Macro
'
'
    Selection.MoveUp Unit:=wdParagraph, Count:=1
    Selection.Paragraphs.Indent
    Selection.MoveRight Unit:=wdWord, Count:=6, Extend:=wdExtend
    With Selection.Font
        .Name = "Arial"
        .Size = 10
        .Bold = True
        .Italic = False
        .Underline = wdUnderlineNone
        .UnderlineColor = wdColorAutomatic
        .StrikeThrough = False
        .DoubleStrikeThrough = False
        .Outline = False
        .Emboss = False
        .Shadow = False
        .Hidden = False
        .SmallCaps = False
        .AllCaps = False
        .Color = 8917266
        .Engrave = False
        .Superscript = False
        .Subscript = False
        .Spacing = 0
        .Scaling = 100
        .Position = 0
        .Kerning = 0
        .Animation = wdAnimationNone
        .Ligatures = wdLigaturesNone
        .NumberSpacing = wdNumberSpacingDefault
        .NumberForm = wdNumberFormDefault
        .StylisticSet = wdStylisticSetDefault
        .ContextualAlternates = 0
    End With
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdWord, Count:=1
    Selection.MoveLeft Unit:=wdWord, Count:=3, Extend:=wdExtend
    Selection.Copy
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
    Selection.MoveLeft Unit:=wdWord, Count:=1
    Selection.TypeBackspace
    Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Range.Case = wdLowerCase
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveRight Unit:=wdWord, Count:=6, Extend:=wdExtend
    With ActiveDocument.Bookmarks
 
    End With
End Sub
 
 
Sub Ini2()
 
' ini2 Macro
'
'
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "*^p10L/"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdLine, Count:=2
    Application.Run MacroName:="ini"
    With ActiveDocument.Bookmarks
        .Add Range:=Selection.Range, Name:="pnlp0177"
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
End Sub


Alguien me puede dar alguna pista de cómo solucionarlo?

Un saludo a todos y gracias.
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
sin imagen de perfil
Val: 26
Ha aumentado su posición en 3 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

VBA, buscar texto y crear Marcadores

Publicado por Happy1 (13 intervenciones) el 07/02/2021 20:09:08
Voy a simplificar la pregunta a ver si así alguien me puede ayudar. Lo que intento es crear un marcador y que el nombre lo ponga del portapapeles. He creado esta macro pero sé indicar lo del portapapeles

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Marcador1()
'
' Marcador1 Macro
'
'
    With ActiveDocument.Bookmarks
        .Add Range:=Selection.Range, Name:="pnlp0177"
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.TypeBackspace
    Selection.TypeBackspace
End Sub

Quiero que en vez que ponga Name:="pnlp0177" el nombre lo coja del portapapeles.

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