Vai alla fine di ogni riga e il testo in grassetto tra parentesi
Ho bisogno di automatizzare la formattazione di parole specifiche alla fine di ogni riga in MS Word. Dal momento che non ho potuto registrare una macro per eseguire il lavoro a causa dei limiti delle macro di Word, devo pubblicarla qui. Tutto ciò di cui ho bisogno è fare quanto segue: -
- Controlla ogni riga per l'inizio di (
- Inizia a selezionare il testo tra parentesi (comprese le parentesi) finché) non si trova come fine di una frase
- Formatta il testo in grassetto
- Fallo fino alla fine del file
- Eccezione: non formattare le intestazioni che sono già in grassetto e sottolineate.
Come potrei farlo? Oppure rettifica il mio codice in quanto non sta facendo nulla.
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
Risposte
Potresti non aver bisogno di una macro se sai che lo stile del corpo del testo del tuo documento è sempre un determinato stile designato diverso da uno stile titolo. Imposta il tuo Trova e sostituisci in questo modo:

Se il codice jolly è difficile da leggere dal clip dello schermo, è: [(] * [)]
Alla fine sono riuscito a costruire questo codice:
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
Ha funzionato! :) Grazie per il supporto!
MS Word non funziona con le linee. Il seguente codice VBA troverà i paragrafi che terminano con parentesi e li grassetto insieme al contenuto.
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
MODIFICARE:
Un esempio di utilizzo di Trova e sostituisci. Usando questo, tutto il testo tra parentesi è in grassetto (non tenendo conto del requisito di essere alla fine del paragrafo / riga):
Sub ApplyBoldWithinParentheses()
With ActiveDocument.Content.Find
.ClearFormatting
.Text = "[(]*[)]"
.Replacement.Font.Bold = True
.Format = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub