Word VBA 选择所有左缩进段落来格式化文本

Word VBA 选择所有左缩进段落来格式化文本

我想更改所有左缩进段落的字体颜色(在从其他程序导出为 rtf 的文档中)。段落对话框显示它们都缩进 7.94 厘米。

我已经通过使用样式窗格选择了一些缩进的文本来完成此操作,勾选显示段落格式选项,选择所有实例,但这不会选择具有相同缩进的不同格式的文本,并且根本不会被宏记录器记录。

我尝试了查找替换框,将目标段落的段落格式对话框中的左缩进粘贴到查找格式、段落框中(确实有记录,.LeftIndent = CentimetersToPoints(7.94)但根本找不到段落)。

(这是记录下来的以及我尝试过的其他方法:)

    Sub E___IndentedParasBlueFont_DRAFT_TOFIX()
'
'!!!! TO TRY FOR EACH PARA, IF INDENT=, PARA SELECT, SELECTION FONT BLUE

    Selection.Find.ClearFormatting
    
    Selection.Find.ParagraphFormat.LeftIndent = CentimetersToPoints(7.94) 'find left indented paras- DOESNT FIND
        Selection.Find.Execute
    
    With Selection.Find.ParagraphFormat
'        .LeftIndent = 4500 'X ERROR COPIED FROM STYLE FIND MACRO RECORDED
        .LeftIndent = CentimetersToPoints(7.94) 'find left indented paras- DOESNT FIND

'        .SpaceBeforeAuto = False
'        .SpaceAfterAuto = False
'        .CharacterUnitLeftIndent = 0
    End With

    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Highlight = True 'ADD HIGHLIGHT
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
        Selection.Find.Execute
    Selection.Find.Execute Replace:=wdReplaceAll

'
' a_ Macro
' select all indented paras-styles pane

'XXXX DIDNT RECORD SELECT STYLES
'
    With Selection.ParagraphFormat
        .LeftIndent = 4500 '7.94 cm - recorded
        .RightIndent = 0
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 200
        .SpaceAfterAuto = False
        .Alignment = wdAlignParagraphLeft
        .FirstLineIndent = 0
    End With
    Application.Run MacroName:= _
        "Normal.F_Formats.F___FontBlueUnhidden_noOverlay_SelectedCharacters_CtrlAlt_B"
'    CommandBars("Navigation").Visible = False
'    Application.Move Left:=-1638, Top:=-1638
End Sub

我尝试将录制的宏中的缩进更改为所选文本样式中显示的缩进,.LeftIndent = 4500但返回了错误。

我已经在 Google 上搜索了所有我能想到的内容,但没有找到任何结果。哪个搜索词可以正确找到缩进 7.94 厘米的段落?或者,是否可以按照样式窗格中提供的方法编写宏,即“选择包含该缩进的未命名样式的所有实例”?

缩进、样式示例

答案1

文本最初可能使用不同的单位缩进,例如英寸。即使精确转换,Word 也无法找到使用不同单位输入的缩进。请尝试将单位更改为英寸。

您不需要 VBA 来实现这一点。只需3.125"在“查找段落”中输入 而不是3.94。但是如果您更喜欢录制宏,只要 Word 中的单位设置为英寸,它就无法在对话框中输入英寸。您必须直接编辑 VBA。替换CentimetersToPoints(7.94)InchesToPoints(3.125)

如果不起作用,请尝试不同的单位。您可以在“选项”>“高级”>“显示”部分找到所有可用单位,然后从“以以下单位显示测量值”旁边的下拉菜单中进行选择:

答案2

前面的答案应该可行,但这可能更简单(经过编辑以更好地匹配问题):

假设所有段落都缩进 7.94 厘米或根本不缩进,您可以运行以下 VBA:

Sub myColorIndented()
Dim myParagraph As Word.Paragraph

    For Each myParagraph In ActiveDocument.Paragraphs
        If myParagraph.Format.LeftIndent > 0 Then
            myParagraph.Range.Font.ColorIndex = wdRed
        End If
        
    Next
End Sub

这将使所有缩进段落的字体变成红色。

相关内容