Vaya al final de cada línea y el texto en negrita entre paréntesis
Necesito automatizar el formato de palabras específicas al final de cada línea en MS Word. Como no pude grabar una macro para hacer el trabajo debido a las limitaciones de las macros de Word, tengo que publicarla aquí. Todo lo que necesito es hacer lo siguiente: -
- Compruebe cada línea para ver el comienzo de (
- Comience a seleccionar el texto entre paréntesis (incluido el paréntesis) hasta que) se encuentre como final de una oración
- Dar formato al texto en negrita
- Haz esto hasta el final del archivo
- Excepción: no aplique formato a los títulos que ya estén en negrita y subrayados.
¿Cómo puedo hacer eso? O rectifique mi código, ya que no hace nada en absoluto.
Sub m1()
'
' m1 Macro
'
'
Dim i As Integer
With Selection.Find
For i = 1 To lastRow
.Forward = True
.ClearFormatting
.MatchCase = False
.Wrap = wdFindContinue
.Execute FindText:="("
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.Font.BoldBi = wdToggle
Next
End With
End Sub
Respuestas
Es posible que no necesite una macro si sabe que el estilo del texto del cuerpo de su documento siempre es un estilo designado determinado que no sea un estilo de título. Configure su Buscar y Reemplazar así:

Si el código comodín es difícil de leer en el clip de pantalla, es: [(] * [)]
Finalmente logré construir este código:
Sub m1()
Selection.HomeKey Unit:=wdStory
With Selection.Find
Do While .Execute(FindText:="(", Forward:=True, MatchWildcards:=False) = True
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.Font.BoldBi = wdToggle
Selection.EndKey Unit:=wdLine
Loop
End With
End Sub
¡Funcionó! :) ¡Gracias por el apoyo!
MS Word no funciona con líneas. El siguiente código de VBA encontrará párrafos que terminan entre paréntesis y en negrita junto con el contenido.
Sub Bold_ending_parentheses()
Dim par As Word.Paragraph
Dim str As String
Dim closes As Byte
Dim opens As Long
For Each par In ActiveDocument.Paragraphs
str = StrReverse(par.Range.Text)
closes = InStr(Left(str, 4), ")")
If closes Then
opens = InStr(str, "(")
If opens Then
With par.Range
.Find.Text = StrReverse(Mid(str, closes, opens - closes + 1))
Do
.Find.Execute
If .Find.Found Then .Font.Bold = True
Loop While .Find.Found
End With
End If
End If
Next
End Sub
EDITAR:
Un ejemplo del uso de Buscar y reemplazar. Utilizando esto, todo el texto entre paréntesis está en negrita (sin tener en cuenta el requisito de estar al final del párrafo / línea):
Sub ApplyBoldWithinParentheses()
With ActiveDocument.Content.Find
.ClearFormatting
.Text = "[(]*[)]"
.Replacement.Font.Bold = True
.Format = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub