Her satırın sonuna gidin ve parantez içinde kalın metin

Dec 30 2020

MS Word'de her satırın sonundaki belirli kelimeleri biçimlendirmeyi otomatikleştirmem gerekiyor. Word makrolarının sınırlamaları nedeniyle işi yapmak için bir makro kaydedemediğim için, buraya göndermem gerekiyor. Tek ihtiyacım olan aşağıdakileri yapmak: -

  1. (
  2. Bir cümlenin sonu olana kadar parantez içindeki metni (parantez dahil) seçmeye başlayın
  3. Metni kalın olarak biçimlendir
  4. Bunu dosyanın sonuna kadar yap
  5. İstisna: Zaten kalın ve altı çizili olan başlıkları biçimlendirmeyin.

Bunu nasıl yapabilirim? Veya hiçbir şey yapmadığı için lütfen kodumu düzeltin.

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

Yanıtlar

1 RichMichaels Dec 30 2020 at 22:12

Bir makroya ihtiyacınız olmayabilir, çünkü belgenizin gövde metninin Stilinin her zaman Başlık stili dışında belirli bir belirlenmiş stil olduğunu biliyorsunuzdur. Bul ve Değiştir'inizi şu şekilde ayarlayın:

Joker kodun ekran klibinden okunması zorsa: [(] * [)]

Roy Dec 31 2020 at 13:51

Sonunda bu kodu oluşturmayı başardım:

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

İşe Yaradı! :) Destek için teşekkürler!

ZygD Dec 30 2020 at 16:54

MS Word satırlarla çalışmaz. Aşağıdaki VBA kodu, parantezle biten ve içerikle birlikte kalın olan paragrafları bulacaktır.

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

DÜZENLE:

Bul ve Değiştir kullanımına bir örnek. Bunu kullanarak, parantez içindeki tüm metinler kalın yazılır (paragrafın / satırın sonunda olma gerekliliği dikkate alınmadan):

Sub ApplyBoldWithinParentheses()
   With ActiveDocument.Content.Find
      .ClearFormatting
      .Text = "[(]*[)]"
      .Replacement.Font.Bold = True
      .Format = True
      .MatchWildcards = True
      .Execute Replace:=wdReplaceAll
   End With
End Sub