vba - 格式化整个文档每章第一段中的前四个单词
问题描述
我在 MS Word 中格式化我的手稿以供出版。我想格式化每章的第一段。
以下要求我转到每个第一段并选择我想变成“小型大写字母”的单词
With Selection.Find
.Text = "[a-z]{1,}"
.MatchWildcards = True
.MatchCase = True
.Replacement.Font.Size = 9.5
.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindStop
End With
Selection.Range.Case = wdUpperCase
With Selection.ParagraphFormat
.LeftIndent = InchesToPoints(0)
.RightIndent = InchesToPoints(0)
.SpaceBefore = 0
.SpaceBeforeAuto = False
.SpaceAfter = 0
.SpaceAfterAuto = False
.LineSpacingRule = wdLineSpaceMultiple
.LineSpacing = LinesToPoints(1)
.Alignment = wdAlignParagraphJustify
.WidowControl = True
.KeepWithNext = False
.KeepTogether = False
.PageBreakBefore = False
.NoLineNumber = False
.Hyphenation = True
.FirstLineIndent = InchesToPoints(0)
.OutlineLevel = wdOutlineLevelBodyText
.CharacterUnitLeftIndent = 0
.CharacterUnitRightIndent = 0
.CharacterUnitFirstLineIndent = 0
.LineUnitBefore = 0
.LineUnitAfter = 0
.MirrorIndents = False
.TextboxTightWrap = wdTightNone
.CollapsedByDefault = False
End With
我正在寻找一个版本,它会自动选择整个文档每章第一段中的前四个单词。
第一段具有与单词“正常”样式不同的样式。
有一个分页符和一个使用标题 1 的章节标题。
解决方案
假设每章都以 Heading 1 样式的标题开头...并假设我正确理解下一段(本章中的第一段)您希望前四个单词是小型大写字母...应该这样做:
Sub HeadingOneRange()
Dim doc As Word.Document, i As Long
Dim rng As Word.Range, iRng As Range
Set doc = ActiveDocument
Set rng = doc.Content
Application.ScreenUpdating = False
On Error GoTo errHandler
With rng.Find
.ClearFormatting
.Format = True
.Forward = True
.Style = doc.Styles("Heading 1").NameLocal
.Text = ""
.Wrap = wdFindStop
While .Execute
rng.Select
Set iRng = rng.Bookmarks("\HeadingLevel").Range.Paragraphs(2).Range
With iRng
.Collapse Word.WdCollapseDirection.wdCollapseStart
.MoveEnd Word.WdUnits.wdWord, Count:=4
For i = 1 To .Characters.Count
If .Characters(i).Case = wdLowerCase Then
.Characters(i).Font.Size = 9.5
.Characters(i).Case = wdUpperCase
End If
Next
End With
rng.Collapse Word.WdCollapseDirection.wdCollapseEnd
Wend
End With
Selection.HomeKey wdStory
errHandler:
If Err.Number <> 0 Then
MsgBox Err.Number & vbCr & Err.Description, vbCritical
Err.Clear
End If
Application.ScreenUpdating = True
MsgBox "Action Complete"
End Sub
推荐阅读
- python - jupyter notebook 内核选项卡两次添加相同的环境
- seaborn - 使用 Seaborn 制作箱线图
- reactjs - 如何使用反应读取geojson文件?
- c# - 使用 T 实现包含仅获取属性的接口?针对具有属性 T 的具体类型
- python - 为什么break不会在except子句中跳出whileloop
- c - 我不明白。为什么输入 5,6$ 时 x=1
- c++ - C++(Windows):将虚拟键代码字符串表示(“VK_F6”)转换为十六进制(0x75)
- c# - C# 将 IHtmlContent 转换为字符串
- python - 在python中以一对一的方式将元素从1个列表附加到另一个列表的嵌套元素
- python - 如何在一行中拆分单词以在 DataFrame 中创建新行?