ไปที่จุดสิ้นสุดของแต่ละบรรทัดและข้อความตัวหนาภายในวงเล็บ
ฉันต้องการจัดรูปแบบคำเฉพาะโดยอัตโนมัติในตอนท้ายของแต่ละบรรทัดใน MS Word เนื่องจากฉันไม่สามารถบันทึกมาโครเพื่อทำงานได้เนื่องจากข้อ จำกัด ของมาโคร Word ฉันจึงต้องโพสต์ไว้ที่นี่ สิ่งที่ฉันต้องทำคือทำสิ่งต่อไปนี้: -
- ตรวจสอบแต่ละบรรทัดเพื่อเริ่มต้น (
- เริ่มต้นการเลือกข้อความในวงเล็บ (รวมถึงวงเล็บ) จนถึง) จะพบเมื่อสิ้นสุดประโยค
- จัดรูปแบบข้อความเป็นตัวหนา
- ทำเช่นนี้จนจบไฟล์
- ข้อยกเว้น: อย่าจัดรูปแบบส่วนหัวที่เป็นตัวหนาและขีดเส้นใต้แล้ว
ฉันจะทำอย่างนั้นได้อย่างไร? หรือโปรดแก้ไขรหัสของฉันเนื่องจากไม่ได้ทำอะไรเลย
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
คำตอบ
คุณอาจไม่จำเป็นต้องใช้มาโครหากคุณทราบว่าสไตล์ของข้อความเนื้อหาในเอกสารของคุณเป็นลักษณะที่กำหนดไว้เสมอนอกเหนือจากสไตล์หัวเรื่อง ตั้งค่าค้นหาและแทนที่ของคุณดังนี้:
หากรหัสตัวแทนอ่านยากจากคลิปหน้าจอก็คือ: [(] * [)]
ในที่สุดฉันก็สร้างรหัสนี้สำเร็จ:
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
มันเวิร์ค! :) ขอบคุณสำหรับการสนับสนุน!
MS Word ไม่ทำงานกับบรรทัด โค้ด VBA ต่อไปนี้จะค้นหาย่อหน้าที่ลงท้ายด้วยวงเล็บและเป็นตัวหนาพร้อมกับเนื้อหา
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
แก้ไข:
ตัวอย่างการใช้ Find and Replace เมื่อใช้สิ่งนี้ข้อความทั้งหมดในวงเล็บจะเป็นตัวหนา (ไม่คำนึงถึงความต้องการที่จะอยู่ท้ายย่อหน้า / บรรทัด):
Sub ApplyBoldWithinParentheses()
With ActiveDocument.Content.Find
.ClearFormatting
.Text = "[(]*[)]"
.Replacement.Font.Bold = True
.Format = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub